Обращение струн JSON и Java Objects [JSON-LIB]
В процессе разработки вам часто нужно обмениваться данными с другими системами. Форматы обмена данными включают 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 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 Adder; } public void setAddress (строковый адрес) {this.address = address; } @Override public 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»); // 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); }Я определил класс организации студента, а затем преобразовал его в струны 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/"}"; 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 object o = jsonarray.get (0); JsonObject jsonObject2 = jsonObject.fromObject (o); Студент stu2 = (студент) jsonobject.tobean (jsonobject2, student.class); System.out.println ("stu:"+stu); System.out.println ("stu2:"+stu2); }Результат печати:
Stu: Студент [name = json, возраст = 24, адрес = xicheng District, Пекин] Stu2: Студент [имя = JSON, возраст = 24, адрес = xicheng District, Пекин]
Как видно из приведенного выше кода, использование jsonObject может легко преобразовать строки формата JSON в объекты Java, но использование JSonArray не так просто, потому что он имеет символ «[]», поэтому после того, как мы получим объект jsonArray, мы принимаем первый элемент, который является деформацией студента, который нам нужен, и затем используем JSonObject, чтобы легко получить его.
2. Передача списка и струн JSON
Список-》》 json String
public static void liledtojson () {Студент Stu = new Student (); stu.setname ("json"); stu.setage ("23"); Stu.setAddress («Пекинский Хайдианский район»); List <toold> Lists = new ArrayList <tlood> (); lists.add (stu); // 1. Использовать jsonObject // jsonObject listObject = jsonObject.fromObject (списки); // 2. Использовать jsonarray jsonarray distarray = jsonarray.fromobject (списки); //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/"}]"; // конвертируйте в список списка <tlpated> list2 = (list <toolder>) jsonarray.tolist (jsonarray.fromobject (arraystr), student.class); для (студент Stu: list2) {System.out.println (stu); } // конвертировать в Array Student [] ss = (студент []) jsonarray.toarray (jsonarray.fromobject (arraystr), student.class); для (студент студента: ss) {System.out.println (студент); }}Распечатать результат,
Студент [имя = JSON, возраст = 24, адрес = район Xicheng, Пекин] Студент [имя = JSON, возраст = 24, адрес = район Xicheng, Пекин]
Поскольку формат строки находится в формате с «[]», здесь выбирается объект JSonarray, который имеет методы использования. Первый преобразуется в массив в Яве или в список в Яве. Поскольку здесь есть класс сущностей, чтобы соответствовать, тип общего (Student.class) указывается при его использовании, поэтому конвертированный объект может быть получен.
3.
Карта-》》 json String
public static void maptojson () {студент stu = new Student (); stu.setname ("json"); stu.setage ("23"); Stu.setAddress («Шанхай, Китай»); Map <string, stu> map = new HashMap <String, Student> (); 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 ()); }Распечатать результат,
MapObject {"First": {"адрес": "Shanghai," Age ":" 23 "," name ":" json "}} maparray: [{" First ": {" адрес ":" Shanghai, "Age": "23", "name": "json"}}]]Две формы напечатаны выше.
json String-》》 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 ("first", student.class); // используется метод TOBEAN, и для MyBean My = (mybean) jsonObject.tobean (jsonObject, mybean.class, map) требуется три параметра (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; открытый класс mybean {частный студент первым; Общественный студент getFirst () {вернуть первое; } public void setFirst (Студент сначала) {this.first = First; }} Используя метод Tobean (), в передаче три параметра, первым является объект jsonObject, вторым является mybean.class, а третий - объект карты. Через MyBean мы можем знать, что в этом классе должен быть первый атрибут, а его тип - это студент, который соответствует ключам и типам значений на карте, то есть тип значения, соответствующего первому типу ключа.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.