json과 String의 전환
String에서 Json Array Json Array json Array = Json Array로 전환.fromObject(String str)
개발 과정에서 다른 시스템과 데이터를 교환해야 한다. 데이터 교환의 형식은 XML, JSON 등이 있다. JSON은 경량급 데이터 형식으로서 XML보다 효율이 높고 XML은 많은 라벨이 필요하다. 이것은 인터넷 데이터를 차지하는 것이 틀림없다. JSON은 이 방면에서 매우 잘했다. 다음은 JSON의 형식을 살펴보자.
JSON은 두 가지 형식이 있는데 하나는 대상 형식이고 다른 하나는 수조 대상이다.
{"name": "JSON", "address": "북경시 서성구", "age": 25}/JSON의 대상 형식의 문자열
[{"name": "JSON", "address": "북경시 서성구", "age": 25}]//데이터 대상 형식
위의 두 가지 형식을 통해 알 수 있듯이 대상 형식과 수조 대상 형식의 유일한 차이점은 대상 형식에 []를 더한 것이다. 그리고 구체적인 구조를 보면 모두 키 값이 맞는 형식으로 나타나고 중간에 영문 상태에서의 쉼표(,)로 구분된다는 것을 알 수 있다.
전단과 후단에서 데이터를 전송할 때 이런 형식도 인기가 있다. 후단은 json 형식의 문자열을 되돌려주고 전단에서 js의 JSON을 사용한다.parse () 방법은 JSON 문자열을 json 대상으로 해석한 다음, 전방에서 사용할 수 있도록 반복합니다.
다음은 본론으로 들어가 JAVA에서 JSON과 자바 대상 간의 상호작용을 소개한다.
JSON과 자바 대상 간의 상호작용을 실현하려면 제3자jar 패키지를 빌려야 한다. 여기서 json-lib이라는 자바 패키지를 사용하고 다운로드 주소는 다음과 같다.https://sourceforge.net/projects/json-lib/, json-lib는commons-beanutils-1.8.0이 필요합니다.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar 다섯 개의 패키지 지원으로 인터넷에서 다운로드할 수 있으며 다운로드 주소는 더 이상 붙이지 않습니다.
json-lib은 이 기능을 완성할 수 있는 몇 가지 종류를 제공합니다. 예를 들어 JSONObject, JSONarray입니다.클래스의 이름에서 알 수 있듯이 JSONObject는 대상 격식으로 전환해야 하고 JSONarray는 수조 대상(즉 [] 형식을 가진)으로 전환해야 한다.
1. 자바 일반 대상과 json 문자열의 상호작용
java 대상 --->> 문자열
자바 일반 대상은 자바 중의 자바 bean, 즉 하나의 실체 클래스를 가리킨다. 예를 들어
package com.smallwhite.pojo;
public class Student {
//
private String name;
//
private String age;
//
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", address="
+ address + "]";
}
}
위에는 나의 일반적인java실체류이다. json-lib가 그것을 어떻게 문자열 형식으로 바꾸는지 보면
저는 Student의 실체 클래스를 정의한 다음에 각각 JSONObject와 JSONarray 두 가지 방식으로 JSON 문자열로 전환했습니다. 다음은 인쇄의 결과를 보겠습니다.
public static void convertObject() {
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress(" ");
//1、 JSONObject
JSONObject json = JSONObject.fromObject(stu);
//2、 JSONArray
JSONArray array=JSONArray.fromObject(stu);
String strJson=json.toString();
String strArray=array.toString();
System.out.println("strJson:"+strJson);
System.out.println("strArray:"+strArray);
}
strJson: {"address": "북경시 서성구", "age": "23", "name": "JSON"}strArray: [{"address": "북경시 서성구", "age": "23", "name": "JSON"}]
결과에서 알 수 있듯이 두 가지 방법 모두 자바 대상을 JSON 문자열로 전환할 수 있지만 전환된 구조가 다르다.
JSON 문자열--> 자바 객체
위에서 설명한 바와 같이 자바 대상을 어떻게 JSON 문자열로 전환하는지, 다음은 어떻게 JSON 문자열 형식을 자바 대상으로 전환하는지,
먼저 두 가지 서로 다른 형식의 문자열을 정의해야 하고\쌍인용 부호를 사용하여 뜻을 바꾸어야 한다.
public static void jsonStrToJava(){
//
String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\" \"}";
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\" \"}]";
//1、 JSONObject
JSONObject jsonObject=JSONObject.fromObject(objectStr);
Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);
//2、 JSONArray
JSONArray jsonArray=JSONArray.fromObject(arrayStr);
// jsonArray
Object o=jsonArray.get(0);
JSONObject jsonObject2=JSONObject.fromObject(o);
Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class);
System.out.println("stu:"+stu);
System.out.println("stu2:"+stu2);
}
인쇄 결과는 다음과 같습니다.
stu:Student[name=JSON,age=24,address=베이징시 서성구]stu2:Student[name=JSON,age=24,address=베이징시 서성구]
위의 코드에서 알 수 있듯이 JSONObject를 사용하면 쉽게 JSON 형식의 문자열을 자바 대상으로 바꿀 수 있지만 JSONarray를 사용하는 것은 쉽지 않다. 왜냐하면'[]'기호가 있기 때문에 우리는 JSONarray의 대상을 얻은 후에 그 첫 번째 요소인 우리가 필요로 하는 student의 변형을 취하고 JSONObject를 사용하여 쉽게 얻을 수 있다.
2. list와 json 문자열의 상호작용
list-->>json 문자열
public static void listToJSON(){
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress(" ");
List lists=new ArrayList();
lists.add(stu);
//1、 JSONObject
//JSONObject listObject=JSONObject.fromObject(lists);
//2、 JSONArray
JSONArray listArray=JSONArray.fromObject(lists);
//System.out.println("listObject:"+listObject.toString());
System.out.println("listArray:"+listArray.toString());
}
JSONObject를 사용하는 방식을 잃어버렸어요. 주석을 달기 전의 결과를 먼저 볼게요.
Exception in thread "main"net.sf.json.JSONException: 'object' is an array. Use JSONarray instead는 나에게 이상이 있다고 말했다. 원본 코드를 보면 fromObject 방법을 사용할 때 매개 변수 유형을 먼저 판단한다. 여기에 전송된 매개 변수는 Array 유형이다. 사용한 Array List이기 때문이다. 다시 보면 주석의 결과를 알 수 있다.
listArray: [{"address": "북경시 해전구", "age": "23", "name": "JSON"}] 이런 결과는 정상입니다.
json 문자열 -- 목록
위의 예에서 보듯이list의 대상은 수조 대상의 형식으로만 바뀔 수 있다. 그러면 아래의 문자열에서list로의 전환을 보면
public static void jsonToList(){
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\" \"}]";
// list
List list2=(List)JSONArray.toList(JSONArray.fromObject(arrayStr), Student.class);
for (Student stu : list2) {
System.out.println(stu);
}
//
Student[] ss =(Student[])JSONArray.toArray(JSONArray.fromObject(arrayStr),Student.class);
for (Student student : ss) {
System.out.println(student);
}
}
Student [name=JSON,age=24,address=북경시 서성구] 인쇄 결과,
Student [name=JSON,age=24,address=북경시 서성구]
문자열의 형식은'[]'가 있는 형식이기 때문에 JSONarray라는 대상을 선택하십시오. 이것은 toArray, toList 방법으로 사용할 수 있습니다. 전자는 자바의 그룹으로 전환되거나 자바의 리스트로 전환됩니다. 여기에 실체 클래스가 대응하기 때문에 사용할 때 일반적인 유형을 지정합니다(Student.class).이렇게 하면 전환된 대상을 얻을 수 있다.
3. 맵과 json 문자열의 상호작용
맵--> json 문자열
public static void mapToJSON(){
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress(" ");
Map map=new HashMap();
map.put("first", stu);
//1、JSONObject
JSONObject mapObject=JSONObject.fromObject(map);
System.out.println("mapObject"+mapObject.toString());
//2、JSONArray
JSONArray mapArray=JSONArray.fromObject(map);
System.out.println("mapArray:"+mapArray.toString());
}
인쇄 결과,
맵Object {"first": {"address": "중국 상하이", "age": "23", "name": "JSON"} 맵Array: [{"first": {"address": "중국 상하이", "age": "23", "name": "JSON"}]
위에 두 가지 형식을 인쇄하였다.
json 문자열 - 맵
JSON 문자열은 맵 객체로 직접 전환할 수 없으며 맵의 키에 해당하는 값을 얻으려면 다른 방법이 필요합니다.
public static void jsonToMap(){
String strObject="{\"first\":{\"address\":\" \",\"age\":\"23\",\"name\":\"JSON\"}}";
//JSONObject
JSONObject jsonObject=JSONObject.fromObject(strObject);
Map map=new HashMap();
map.put("first", Student.class);
// toBean ,
MyBean my=(MyBean)JSONObject.toBean(jsonObject, MyBean.class, map);
System.out.println(my.getFirst());
}
인쇄 결과,
Student [name=JSON,age=23,address=중국 상하이]
다음은 MyBean 코드입니다.
import java.util.Map;
package com.smallwhite.pojo.Student;
public class MyBean {
private Student first;
public Student getFirst() {
return first;
}
public void setFirst(Student first) {
this.first = first;
}
}
toBean () 방법을 사용하면 세 개의 매개 변수를 전송합니다. 첫 번째는 JSONObject 대상이고, 두 번째는 MyBean입니다.class, 세 번째는 맵 대상입니다.MyBean을 통해 이러한 종류에 퍼스트의 속성이 있고 그 유형은 Student이며 맵의 키와 값 유형, 즉 퍼스트의 키 퍼스트 유형에 대응하는 값의 유형을 알 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.