JSON 스트링과 Java 물체의 역전 [JSON-LIB]
개발 과정에서 종종 데이터를 다른 시스템과 교환해야합니다. 데이터 교환 형식에는 XML, JSON 등이 포함됩니다. JSON은 XML보다 더 효율적인 가벼운 데이터 형식입니다. XML은 의심 할 여지없이 네트워크 트래픽을 차지하는 많은 태그가 필요합니다. JSON은 이와 관련하여 좋은 일을합니다. JSON의 형식을 살펴 보겠습니다.
JSON은 두 가지 형식을 가질 수 있습니다. 하나는 객체 형식이고 다른 하나는 배열 객체입니다.
{ "name": "json", "address": "Xicheng District, Beijing", "age": 25} // json의 객체 형식 문자열 [{ "name": "JSON", "주소": "Xicheng District, Beijing", "Age": 25}] // 데이터 객체 형식위의 두 형식에서 객체 형식과 배열 객체 형식의 유일한 차이점은 []가 객체 형식에 추가된다는 것입니다. 그런 다음 특정 구조를보십시오. 그들은 둘 다 영국 상태의 쉼표 (,)로 분리 된 키 가치 쌍의 형태로 나타납니다.
이 형식은 데이터 전송이 프론트 엔드 및 백엔드에서 수행 될 때 매우 인기가 있습니다. 백엔드는 문자열을 JSON 형식으로 반환합니다. 프론트 엔드는 json.parse () 메소드를 사용하여 JSON 문자열을 JSON 객체에 구문 분석 한 다음 프론트 엔드를 사용하기 위해 횡단합니다.
주제를 다루고 JAVA에서 JSON과 Java 객체 사이의 상호 변환을 소개합시다.
JSON과 Java 객체 사이의 상호 전달을 실현하려면 타사 JAR 패키지를 사용해야합니다. 여기에서 JSON-LIB JAR 패키지를 사용합니다. 다운로드 주소는 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.jar 및 Ezmorph-1.0.6.jar의 5 가지 패키지를 지원해야합니다. 인터넷에서 직접 다운로드 할 수 있습니다. 다운로드 주소는 더 이상 여기에 게시되지 않습니다.
JSON-LIB는 JSONOBJECT, JSONARRAY와 같은이 기능을 완성 할 수있는 몇 가지 클래스를 제공합니다. 클래스의 이름에서 변환 된 JsonObject가 객체 형식이어야하는 반면 JSONARRAY 변환은 배열 객체 (즉, [])이어야한다는 것을 알 수 있습니다.
1. Java 일반 물체 및 JSON 현의 상호 전달
Java 객체--문자열
일반적인 Java 객체는 Java의 Java Bean을 말합니다.
package com.cn.study.day3; 공개 클래스 학생 {// 개인 문자열 이름; // 연령 개인 문자열 연령; // 개인 문자열 주소 주소; 공개 문자열 getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public String getage () {반환 연령; } public void setage (String Age) {this.age = age; } public String getAddress () {return address; } public void setAddress (문자열 주소) {this.address = 주소; } @override public String toString () {return "reptoy"wiching [name = " + name +", age = " + age +", address = " + address +"]; }}위의 정상적인 Java Entity 클래스는 JSON-LIB가 문자열 형태로 어떻게 변환하는지 확인하십시오.
public static void converoBject () {Student stu = new Student (); stu.setName ( "JSON"); stu.setage ( "23"); stu.setAddress ( "베이징 Xicheng 지구"); // 1. jsonobject jsonobject json = jsonobject.fromobject (stu); // 2. jsonarray jsonarray array = jsonarray.fromobject (stu); 문자열 strjson = json.tostring (); 문자열 strarray = array.toString (); System.out.println ( "strjson :"+strjson); System.out.println ( "Strarray :"+Strarray); }학생의 엔티티 수업을 정의한 다음 각각 JSONOBJECT 및 JSONARRAY를 사용하여 JSON 현으로 변환했습니다. 아래에서 인쇄 된 결과를 보자.
strjson : { "address": "Xicheng District, Beijing", "Age": "23", "Name": "JSON"} Strarray : [{ "address": "Xicheng District, Beijing", "Age": "Name": "JSON"}]결과에서, 우리는 두 방법 모두 Java 객체를 JSON 문자열로 변환 할 수 있지만 변환 된 구조는 다르다는 것을 알 수 있습니다.
JSON 문자열-》》 Java 객체
위의 내용은 Java 객체를 JSON 문자열로 변환하는 방법을 설명합니다. JSON 문자열 형식을 Java 객체로 변환하는 방법을 살펴 보겠습니다.
먼저 두 줄을 서로 다른 형식으로 정의해야합니다. 이중 인용문을 사용/탈출해야합니다.
public static void jsonstrojava () {// 두 문자열이 다른 형식의 두 문자열 정의 문자열 objectstr = "{/"name/":/"json/",/"age/":/"24/",/"address/":/"Xicheng District, Beijing/"}"; String arraystr = "[{/"name/":/"json/",/"age/":/"24/",/"address/":/"Xicheng District, Beijing/"}]; // 1. jsonobject jsonobject jsonobject = jsonobject.fromobject (objectstr)를 사용하십시오. 학생 stu = (학생) Jsonobject.tobean (jsonobject, student.class); // 2. jsonarray jsonarray jsonarray = jsonarray.fromobject (arraystr); // jsonArray 객체의 첫 번째 요소를 가져옵니다. o = jsonArray.get (0); jsonobject jsonobject2 = jsonobject.fromobject (o); Student STU2 = (학생) JSONOBJECT.TOBEAN (JSONOBJECT2, Student.Class); System.out.println ( "stu :"+stu); System.out.println ( "stu2 :"+stu2); }인쇄 결과는 다음과 같습니다.
STU : 학생 [이름 = JSON, AGE = 24, 주소 = Xicheng District, Beijing] STU2 : Student [name = json, age = 24, address = Xicheng District, Beijing]
위의 코드에서 볼 수 있듯이 JsonObject를 사용하면 JSON 형식 문자열을 Java 객체로 쉽게 변환 할 수 있지만 JSONARRAY를 사용하면 "[]"기호가 있기 때문에 쉽지 않기 때문에 JSONARRAY 객체를 얻은 후에는 필요한 학생의 변형 인 첫 번째 요소를 사용하여 JSONOBJECT를 사용하여 쉽게 얻습니다.
2. 목록 및 JSON 문자열의 전송
목록-》》 json 문자열
public static void listtojson () {Student stu = new Student (); stu.setName ( "JSON"); stu.setage ( "23"); stu.setAddress ( "베이징 Haidian District"); List <guldent> lists = new ArrayList <tudent> (); 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를 사용하여 베팅했습니다. 주석 전에 결과를 살펴 보겠습니다.
스레드의 예외 "main"net.sf.json.jsonexception : 'Object'는 배열입니다. 대신 jsonarray를 사용하십시오
예외가 있다고 말 해주세요. 소스 코드를 확인하면 FromObject 메소드를 사용할 때 먼저 매개 변수 유형을 판단합니다. 여기서는 배열리스트가 사용되기 때문에 전달 된 매개 변수가 배열 유형이라고 알려줍니다. 댓글 후 결과를 살펴 보겠습니다.
ListArray : [{ "주소": "Haidian District, Beijing", "Age": "23", "Name": "JSON"}] 이 결과는 정상입니다.
JSON 문자열-》》 목록
위의 예에서 목록 객체는 배열 객체의 형식으로 만 변환 할 수 있음을 알 수 있습니다. 아래 문자열에서 아래 목록으로 변환을 살펴 보겠습니다.
public static void jsontolist () {String arraystr = "[{/"name/":/"json/",/"age/":/"24/",/"address/":/"Beijing Xicheng District/"}]; // 목록으로 변환 <tudent> list2 = (list <tudent>) jsonarray.tolist (jsonarray.fromobject (arraystr), student.class); for (학생 stu : list2) {system.out.println (stu); } // 배열 학생으로 변환 [] ss = (학생 []) jsonArray.toArray (jsonArray.fromObject (arraystr), student.class); for (학생 학생 : ss) {system.out.println (학생); }}결과를 인쇄하고
학생 [name = json, 나이 = 24, 주소 = Xicheng District, Beijing] 학생 [이름 = json, 나이 = 24, 주소 = Xicheng District, Beijing]
문자열의 형식은 "[]"가있는 형식이므로 jsonarray 객체가 여기에서 선택되며,이 방법은 ToArray 및 Tolist 사용 방법이 있습니다. 전자는 자바의 배열 또는 Java 목록으로 변환됩니다. 여기에 해당하는 엔티티 클래스가 있으므로, 일반 (학생 .class)의 유형을 사용할 때 지정되므로 변환 된 객체를 얻을 수 있습니다.
3.지도와 JSON 문자열 변환
지도 -JSON 문자열
public static void maptojson () {Student stu = new Student (); stu.setName ( "JSON"); stu.setage ( "23"); stu.setAddress ( "중국 상하이"); map <string, stu> map = new Hashmap <문자열, 학생> (); map.put ( "첫 번째", 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 ()); }결과를 인쇄하고
mapObject { "First": { "address": "Shanghai,"Age ":"23 ","Name ":"JSON "}} MapArray : [{"First ": {"address ":"Shanghai, "Age": "Name": "JSON"}}]위에 두 가지 양식이 인쇄됩니다.
JSON 문자열 -MAP
JSON 문자열은 맵 객체로 직접 변환 할 수 없습니다. 맵에서 키에 해당하는 값을 얻으려면 다른 방법이 필요합니다.
public static void jsontomap () {String strobject = "{/"first/": {/"address/":/"Shanghai, China/",/"age/":/"23/",/"name/":/"json/"}}"; // jsonobject jsonobject jsonobject = jsonobject.fromobject (strobject); 지도 맵 = new Hashmap (); map.put ( "첫 번째", 학생 .class); // Tobean 방법이 사용되며 MyBean My = (MyBean) jsonobject.tobean (jsonobject, mybean.class, map)에 3 개의 매개 변수가 필요합니다. System.out.println (my.getFirst ()); }결과를 인쇄하고
학생 [name = json, 나이 = 23, 주소 = 중국 상하이]
아래는 MyBean 코드입니다.
패키지 com.cn.study.day4; import java.util.map; import com.cn.study.day3.student; public class mybean {사립 학생 첫 번째; 공개 학생 getfirst () {return first; } public void setfirst (학생 우선) {this.first = 첫 번째; }} Tobean () 메소드를 사용하여 3 개의 매개 변수가 전달되고, 첫 번째는 jsonobject 객체이고, 두 번째는 mybean.class이고, 세 번째는 맵 객체입니다. MyBean을 통해이 클래스에는 첫 번째 속성이 있어야하며, 그 유형은 학생이라는 것을 알 수 있습니다.이 유형은지도의 키 및 값 유형, 즉 첫 번째 키 유형에 해당하는 값의 유형에 해당합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.