В процессе разработки вам часто нужно обмениваться данными с другими системами. Форматы обмена данными включают XML, JSON и т. Д. JSON - это легкий формат данных, который более эффективен, чем XML. XML требует много тегов, которые, несомненно, занимают сетевой трафик. JSON делает хорошую работу в этом отношении. Давайте посмотрим на формат JSON.
JSON может иметь два формата, один - это формат объекта, а другой - Array Object.
{"name": "json", "Address": "Xicheng District, Пекин", "AGE": 25} // Строка объекта JSON
[{"name": "json", "Address": "Xicheng District, Пекин", "Возраст": 25}] // Формат объекта данных
Из двух вышеупомянутых форматов мы видим, что единственное различие между форматом объекта и форматом объекта массива заключается в том, что [] добавляется в формат объекта. Затем посмотрите на конкретную структуру. Видно, что они оба появляются в форме пар ключевых значений, разделенных запятыми (,) в английском государстве.
Этот формат также очень популярен, когда передача данных осуществляется на переднем и заднем плане. Бэк-энд возвращает строку в формате JSON. Фронт-энд использует метод json.parse () в JS, чтобы проанализировать строку JSON в объект JSON, а затем пройти для использования фронт-энда.
Давайте перейдем к теме и представим взаимное обращение между объектами JSON и Java в Java.
Чтобы реализовать взаимную передачу между объектами JSON и Java, вам необходимо использовать сторонний пакет 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.jar и Ezmorph-1.0.6.jar. Вы можете скачать его из Интернета самостоятельно. Адрес загрузки больше не будет размещен здесь.
JSON-LIB предоставляет несколько классов, которые могут выполнить эту функцию, такие как jsonObject, jsonarray. Из имени класса мы видим, что преобразованный jsonObject должен находиться в формате объекта, в то время как трансформированные JsonArray должны быть массивными объектами (то есть с формой []).
1. взаимная передача обычных объектов Java и струн JSON
Java объект-》》 строка
Нормальный объект Java относится к Java Bean в Java, то есть классе сущностей, например, как
пакет com.cn.study.day3; public class clout {// name private string name; // age private string age; // адрес частной строки; public string getName () {return name;} public void setName (string name) {this.name = name;} public String getage () {return age;} public void setage (string ages) {this. Address;} public void setAddress (строковый адрес) {this.address = address;}@overridepublic string toString () {return "Student [name =" + name + ", age =" + age + ", address =" + address + "]";}}}}}}}}}}}}}}Выше представляет собой обычный класс Java Entity, см., Как JSON-LIB преобразует его в строковую форму,
public static void convertObject () {Student Stu = new Student (); stu.setName ("json"); Stu.setage ("23"); Stu.setAddress ("Пекинский район Xicheng District"); // 1. Используйте jsonObjectJsonObject json = jsonObject.FromObject (stu); // 2. Используйте jsonarrayjsonarray array = jsonarray.fromobject (stu); string strjson = json.tostring (); string strarray = array.tostring (); system.out.println ("strjson:"+strjson); System.out.println ("strarray:"+strarray);Я определил класс организации студента, а затем преобразовал его в струны JSON, используя JSonObject и JSonarray соответственно. Давайте посмотрим на печатный результат ниже.
strjson: {«адрес»: «Район Xicheng, Пекин», «Возраст»: «23», «Имя»: «json»}
Strarray: [{«адрес»: «Район Xicheng, Пекин», «Возраст»: «23», «Имя»: «json»}]
Из результатов мы можем видеть, что оба метода могут преобразовать объекты Java в строки JSON, но преобразованная структура отличается.
Json String-》》 Java Object
Выше объясняет, как преобразовать объекты Java в струны JSON. Давайте посмотрим, как преобразовать формат струн JSON в объекты Java.
Во -первых, вам нужно определить две строки в разных форматах, вам нужно использовать/избежать двойных цитат.
public static void jsonstrojava () {// определить две строки разных форматов string objectstr = "{/" name/":/" json/",/" age/":/" 24/",/" Address/":/" xicheng District, beijing/"}"; arraystr = "[{/" name/":/" json/",/" age/":/" 24/",/" address/":/" Пекинский район Xicheng, Пекин/"}]"; // 1. Использовать jsonObjectJsonObject jsonObject = jsonObject.FromObject (ObjectStr); студент Stu = (студент) jsonObject.tobean (jsonObject, student.class); // 2. Используйте jsonarrayjsonarray jsonarray = jsonarray.fromobject (arraystr); // Получить первый элемент jsonarray obj Student.class); System.out.println ("stu:"+stu); System.out.println ("stu2:"+stu2);}Результат печати:
Stu: Студент [name = json, возраст = 24, адрес = xicheng District, Пекин]
STU2: Студент [имя = JSON, возраст = 24, адрес = район Xicheng, Пекин]
Как видно из приведенного выше кода, использование jsonObject может легко преобразовать строки формата JSON в объекты Java, но использование JSonArray не так просто, потому что он имеет символ «[]», поэтому после того, как мы получим объект jsonArray, мы принимаем первый элемент, который является деформацией студента, который нам нужен, и затем используем JSonObject, чтобы легко получить его.
2. Передача списка и струн JSON
Список-》》 json String
public static void listTojson () {Student Stu = new Student (); Stu.SetName ("json"); Stu.Setage ("23"); Stu.setAddress ("Beijing Haidian District"); List <toold> Lists = new Arraylist <tlpant> (); lists.add (Stu); // 1. Используйте jsonObject // jsonObject listObject = jsonObject.fromObject (списки); // 2. Используйте jsonarrayjsonarray listarray = jsonarray.fromobject (lists); // system.out.println ("listobject:"+listobject.tostring ()); System.out.println ("listarray:"+listarray.toString ());}Я использовал jsonObject, чтобы сделать ставку. Давайте посмотрим на результаты перед комментарием.
Исключение в потоке «Main» net.sf.json.jsonexception: «Объект» - это массив. Вместо этого используйте Jsonarray
Скажи мне, что есть исключение. Проверяя исходный код, я обнаружил, что при использовании метода FromObject я сначала буду судить тип параметра. Здесь я говорю нам, что пропущенный параметр является типом массива, потому что используется ArrayList. Давайте посмотрим на результат после комментария.
ListArray: [{«Адрес»: «Район Хаидиан, Пекин», «Возраст»: «23», «Имя»: «json»}]
Этот результат нормальный.
json String-》》 Список
Из приведенного выше примера мы видим, что объект списка может быть преобразован только в формат объекта массива. Итак, давайте посмотрим на преобразование из строки в список ниже.
public static void jsontolist () {string arraystr = "[{/" name/":/" json/",/" age/":/" 24/",/" address/":/" Beijing xicheng District/"}]"; // confurtstist <clident> = (СТУДЕНТ>) JSONARRAY. STUNDE.CLASS); для (Студент STU: List2) {System.out.println (stu);} // преобразование в Array Student [] ss = (студент []) jsonarray.toarray (jsonarray.fromobject (arraystr), student.class); для (студент студента: ss) {system.out.printРаспечатать результат,
Студент [имя = JSON, возраст = 24, адрес = xicheng District, Пекин]
Студент [имя = JSON, возраст = 24, адрес = xicheng District, Пекин]
Поскольку формат строки находится в формате с «[]», здесь выбирается объект JSonarray, который имеет методы использования. Первый преобразуется в массив в Яве или в список в Яве. Поскольку здесь есть класс сущностей, чтобы соответствовать, тип общего (Student.class) указывается при его использовании, поэтому конвертированный объект может быть получен.
3.
Карта-》》 json String
public static void maptojson () {student stu = new Student (); stu.setname ("json"); stu.setage ("23"); Stu.setAddress ("Shanghai, China"); Map <String, Stu> Map = new Hashmap <String, Student> (); Map.put ("First", Stu); // 1. JsonObjectJsonObject mapObject = jsonObject.fromObject (map); System.out.println ("mapObject"+mapObject.toString ()); // 2. Jsonarrayjsonarray maparray = jsonarray.fromobject (map); system.out.println ("maparray:"+maparray.tostring ());}Распечатать результат,
MapObject {"First": {"адрес": "Shanghai, China", "Age": "23", "name": "json"}}
Maparray: [{"First": {"Address": "Shanghai, China", "AGE": "23", "Имя": "json"}}]
Две формы напечатаны выше.
json String-》》 Map
Строки JSON не могут быть преобразованы непосредственно в объекты карты. Чтобы получить значение, соответствующее ключам в картах, требуются другие методы.
public static void jsontomap () {string strobject = "{/" first/": {/" address/":/" shanghai, china/",/" age/":/" 23/",/" name/":/" json/"}}"; // jsonObjectJsonObject jsonObject = jsonObject. Hashmap (); map.put ("first", study.class); // используется метод Tobean, и для mybean My = (mybean) jsonobject.tobean (jsonobject, mybean.class, map); 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 {private first; public Student getFirst () {return First;} public void setFirst (Студент первым) {this.first = First;}}Используя метод Tobean (), в передаче три параметра, первым является объект jsonObject, вторым является mybean.class, а третий - объект карты. Через MyBean мы можем знать, что в этом классе должен быть первый атрибут, а его тип - это студент, который соответствует ключам и типам значений на карте, то есть тип значения, соответствующего первому типу ключа.
Выше приведено подробное объяснение примеров взаимного преобразования строк JSON и объектов Java, представленных вам редактором. Я надеюсь, что это будет полезно для вас!