java方式的将java对象以及list或者map转化为json数据
- 格式:docx
- 大小:13.74 KB
- 文档页数:2
GSON中Java对象与JSON互相转换——(⼀)json的转换插件是通过java的⼀些⼯具,直接将java对象或集合转换成json字符串。
常⽤的json转换⼯具有如下⼏种:1)jsonlib2)Gson:google3)fastjson:阿⾥巴巴------GSON操作简单,只需要⼀个jar包----------User.java1package bean;23public class User {45private String id;6private String name;7private int age;8private String address;9public String getId() {10return id;11 }12public void setId(String id) {13this.id = id;14 }15public String getName() {16return name;17 }18public void setName(String name) { = name;20 }21public User(String id, String name, int age, String address) {22super();23this.id = id; = name;25this.age = age;26this.address = address;27 }28 @Override29public String toString() {30return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";31 }32333435 }1.测试Java对象转JSON(测试结果在后⾯注释)操作简单,⽆论转单个对象还是集合,都是gson.toJson(obj);1package TestJson;23import java.util.ArrayList;4import java.util.HashMap;5import java.util.List;6import java.util.Map;78import javax.xml.bind.UnmarshallerHandler;910import org.junit.Test;1112import com.google.gson.Gson;1314import er;1516public class Bean2JSON {1718// 测试单个对象转JSON19 @Test20public void test1(){21 User user = new User("1", "QIAOZHI",25,"⼭西太原");22 Gson gson = new Gson();23 String json = gson.toJson(user);24 System.out.println(json); //{"id":"1","name":"QIAOZHI","age":25,"address":"⼭西太原"}25 }26272829// 测试list转JSON30 @Test31public void test2(){32 List<User> list = new ArrayList<User>();33 list.add(new User("1", "QIAOZHI",25,"⼭西太原"));34 list.add(new User("2", "QIAOZHI",25,"⼭西太原"));35 list.add(new User("3", "QIAOZHI",25,"⼭西太原"));36 Gson gson = new Gson();37 String json = gson.toJson(list);38 System.out.println(json);39// [{"id":"1","name":"QIAOZHI","age":25,"address":"⼭西太原"},{"id":"2","name":"QIAOZHI","age":25,"address":"⼭西太原"},{"id":"3","name":"QIAOZHI","age":25,"address":"⼭西太原"}] 40 }4142// 测试map对象转JSON43 @Test44public void test3(){45 Map<String,User> map = new HashMap<String,User>();46 map.put("1", new User("1", "QIAOZHI",25,"⼭西太原"));47 map.put("2", new User("2", "QIAOZHI",25,"⼭西太原"));48 map.put("3", new User("3", "QIAOZHI",25,"⼭西太原"));49 Gson gson = new Gson();50 String json = gson.toJson(map);51 System.out.println(json);52// {"3":{"id":"3","name":"QIAOZHI","age":25,"address":"⼭西太原"},"2":{"id":"2","name":"QIAOZHI","age":25,"address":"⼭西太原"},"1":{"id":"1","name":"QIAOZHI","age":25,"address":"⼭西53 }5455// 测试list<map>对象转JSON56 @Test57public void test4(){58 List<Map<String,User>> list = new ArrayList<>();59 Map<String,User> map1 = new HashMap<String,User>();60 Map<String,User> map2 = new HashMap<String,User>();61 map1.put("map11", new User("1", "QIAOZHI",25,"⼭西太原"));62 map1.put("map12", new User("2", "QIAOZHI",25,"⼭西太原"));63 map2.put("21", new User("11", "QIAOZHI",25,"⼭西太原"));64 map2.put("22", new User("21", "QIAOZHI",25,"⼭西太原"));65 list.add(map1);66 list.add(map2);67 Gson gson = new Gson();68 String json = gson.toJson(list);69 System.out.println(json);70// [{"map12":{"id":"2","name":"QIAOZHI","age":25,"address":"⼭西太原"},"map11":{"id":"1","name":"QIAOZHI","age":25,"address":"⼭西太原"}},{"21":{"id":"11","name":"QIAOZHI","age":2 71 }7273 }2.测试Json转Java对象与集合(测试结果在后⾯注释)package TestJson_GSON;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.junit.Test;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;public class JSON2Bean {// 测试json转单个对象@Testpublic void test1(){String json = "{'id':'1','name':'QIAOZHI','age':25,'address':'⼭西太原'}";Gson gson = new Gson();User user = gson.fromJson(json, User.class);System.out.println(user);// User [id=1, name=QIAOZHI, age=25, address=⼭西太原]}// 测试JSON转list@SuppressWarnings("unchecked")@Testpublic void test2(){String json = "[{'id':'1','name':'QIAOZHI','age':25,'address':'⼭西太原'},{'id':'2','name':'QIAOZHI','age':25,'address':'⼭西太原'},{'id':'3','name':'QIAOZHI','age':25,'address':'⼭西太原'}]"List<User> list = new ArrayList<User>();Gson gson = new Gson();list = (List<User>) gson.fromJson(json, new TypeToken<List<User>>(){}.getType());System.out.println(list);for(User user:list){System.out.println(user);}// [{id=1, name=QIAOZHI, age=25.0, address=⼭西太原}, {id=2, name=QIAOZHI, age=25.0, address=⼭西太原}, {id=3, name=QIAOZHI, age=25.0, address=⼭西太原}]System.out.println(list.get(1));// {id=2, name=QIAOZHI, age=25.0, address=⼭西太原}}// 测试JSON转Map@Testpublic void test3(){String json = "{'3':{'id':'3','name':'QIAOZHI','age':25,'address':'⼭西太原'},'2':{'id':'2','name':'QIAOZHI','age':25,'address':'⼭西太原'},'1':{'id':'1','name':'QIAOZHI','age':25,'address':'⼭西太原'}}" Map<String,User> map = new HashMap<String,User>();Gson gson = new Gson();map = (Map<String,User>) gson.fromJson(json, new TypeToken<Map<String,User>>(){}.getType());System.out.println(map);// {3={id=3, name=QIAOZHI, age=25.0, address=⼭西太原}, 2={id=2, name=QIAOZHI, age=25.0, address=⼭西太原}, 1={id=1, name=QIAOZHI, age=25.0, address=⼭西太原}}User user = map.get("1");System.out.println(user);// {id=1, name=QIAOZHI, age=25.0, address=⼭西太原}}// 测试JSON转list<map>对象@SuppressWarnings("unchecked")@Testpublic void test4(){String json = "[{'map12':{'id':'2','name':'QIAOZHI','age':25,'address':'⼭西太原'},'map11':{'id':'1','name':'QIAOZHI','age':25,'address':'⼭西太原'}},{'21':{'id':'11','name':'QIAOZHI','age':25,'addre List<Map<String,User>> list = new ArrayList<>();Gson gson = new Gson();list = gson.fromJson(json, new TypeToken<List<Map<String,User>>>(){}.getType());System.out.println(list);// [{map12={id=2, name=QIAOZHI, age=25.0, address=⼭西太原}, map11={id=1, name=QIAOZHI, age=25.0, address=⼭西太原}}, {21={id=11, name=QIAOZHI, age=25.0, address=⼭西太 System.out.println(list.get(1));// {21={id=11, name=QIAOZHI, age=25.0, address=⼭西太原}, 22={id=21, name=QIAOZHI, age=25.0, address=⼭西太原}}}}注意:json转普通的Javabean只需要两个简单的参数,第⼀个是json字符串,第⼆个是需要转换对象的类型。
将Java对象转换成JSONJSON(JavaScript Object Notation, JS 对象简谱) 是⼀种轻量级的数据交换格式。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语⾔。
易于⼈阅读和编写,同时也易于机器解析和⽣成,并有效地提升⽹络传输效率。
JSON 语法规则在 JS 语⾔中,⼀切都是对象。
因此,任何⽀持的类型都可以通过 JSON 来表⽰,例如字符串、数字、对象、数组等。
但是对象和数组是⽐较特殊且常⽤的两种类型:对象表⽰为键值对数据由逗号分隔花括号保存对象⽅括号保存数组以上摘⾃百度百科maven添加如下依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>package Bean;public class User{private Integer id;private String name;private String pass;private String sex;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}package WebTest;import er;import com.alibaba.fastjson.JSON;public class JsonTest{public static void main(String[] args){User user= new User();user.setId(1);user.setName("lzc");user.setPass("123");user.setSex("male");String json=JSON.toJSONString(user);//关键 System.out.println(json);}}。
Java中json与javaBean⼏种互转的讲解⼀、java普通对象和json字符串的互转java对象---->json⾸先创建⼀个java对象:public class Student {//姓名private String name;//年龄private String age;//住址private String address;public String getName() {return name;}public void setName(String 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;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", address="+ address + "]";}}现在java对象转换为json形式:public static void convertObject() {Student stu=new Student();stu.setName("JSON");stu.setAge("23");stu.setAddress("北京市西城区");//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);}定义了⼀个Student的实体类,然后分别使⽤了JSONObject和JSONArray两种⽅式转化为JSON字符串,下⾯看打印的结果:json-->javabean上⾯说明了如何把java对象转化为JSON字符串,下⾯看如何把JSON字符串格式转化为java对象,⾸先需要定义两种不同格式的字符串,需要使⽤\对双引号进⾏转义。
java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json主要实现把java对常⽤的⼀些数据转换成Json,以便前台的调⽤,具体的操作如下:public class ConvertJson {/*** 对象转换为Json* @param obj* @return*/public static String object2json(Object obj) {StringBuilder json = new StringBuilder();if (obj == null) {json.append("\"\"");} else if (obj instanceof String || obj instanceof Integer|| obj instanceof Float || obj instanceof Boolean|| obj instanceof Short || obj instanceof Double|| obj instanceof Long || obj instanceof BigDecimal|| obj instanceof BigInteger || obj instanceof Byte) {json.append("\"").append(string2json(obj.toString())).append("\"");} else if (obj instanceof Object[]) {json.append(array2json((Object[]) obj));} else if (obj instanceof List) {json.append(list2json((List<?>) obj));} else if (obj instanceof Map) {json.append(map2json((Map<?, ?>) obj));} else if (obj instanceof Set) {json.append(set2json((Set<?>) obj));} else {json.append(bean2json(obj));}return json.toString();}/*** 对象bean转换为Json* @param bean* @return*/public static String bean2json(Object bean) {StringBuilder json = new StringBuilder();json.append("{");PropertyDescriptor[] props = null;try {props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();} catch (IntrospectionException e) {}if (props != null) {for (int i = 0; i < props.length; i++) {try {String name = object2json(props[i].getName());String value = object2json(props[i].getReadMethod().invoke(bean));json.append(name);json.append(":");json.append(value);json.append(",");} catch (Exception e) {}}json.setCharAt(json.length() - 1, '}');} else {json.append("}");}return json.toString();}/*** List集合转换为Json* @param list* @return*/public static String list2json(List<?> list) {StringBuilder json = new StringBuilder();json.append("[");if (list != null && list.size() > 0) {for (Object obj : list) {json.append(object2json(obj));json.append(",");}json.setCharAt(json.length() - 1, ']');} else {json.append("]");}return json.toString();}/*** 对象数组转换为Json* @param array* @return*/public static String array2json(Object[] array) { StringBuilder json = new StringBuilder();json.append("[");if (array != null && array.length > 0) {for (Object obj : array) {json.append(object2json(obj));json.append(",");}json.setCharAt(json.length() - 1, ']');} else {json.append("]");}return json.toString();}/*** Map集合转换为Json* @param map* @return*/public static String map2json(Map<?, ?> map) { StringBuilder json = new StringBuilder();json.append("{");if (map != null && map.size() > 0) {for (Object key : map.keySet()) {json.append(object2json(key));json.append(":");json.append(object2json(map.get(key))); json.append(",");}json.setCharAt(json.length() - 1, '}');} else {json.append("}");}return json.toString();}/*** Set集合转为Json* @param set* @return*/public static String set2json(Set<?> set) {StringBuilder json = new StringBuilder(); json.append("[");if (set != null && set.size() > 0) {for (Object obj : set) {json.append(object2json(obj));json.append(",");}json.setCharAt(json.length() - 1, ']');} else {json.append("]");}return json.toString();}/*** 字符串转换为Json* @param s* @return*/public static String string2json(String s) {if (s == null)return "";StringBuilder sb = new StringBuilder();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);switch (ch) {case '"':sb.append("\\\"");break;case '\\':sb.append("\\\\");break;case '\b':sb.append("\\b");break;case '\f':sb.append("\\f");break;case '\n':sb.append("\\n");break;case '\r':sb.append("\\r");break;case '\t':sb.append("\\t");break;case '/':sb.append("\\/");break;default:if (ch >= '\u0000' && ch <= '\u001F') { String ss = Integer.toHexString(ch); sb.append("\\u");for (int k = 0; k < 4 - ss.length(); k++) { sb.append('0');}sb.append(ss.toUpperCase());} else {sb.append(ch);}}}return sb.toString();} }。
很多朋友遇到xml,map和json互转的问题,在开发中xml和json越来越重要了。
我就把我的工具类贴上来。
json-lib依赖包:mons-beanutils-1.8.0.jarmons-collections-3.2.1.jarmons-lang-2.4.jarmons-logging-1.1.1.jar5.ezmorph-1.0.6.jar6.json-lib-2.3-jdk15.jar7.xom-1.2.2.jar以上的包不能缺少否则出现运行错误1.package com.shine.framework.core.util;2.3.import java.io.ByteArrayOutputStream;4.import java.util.ArrayList;5.import java.util.HashMap;6.import java.util.Iterator;7.import java.util.List;8.import java.util.Map;9.10.import net.sf.json.JSON;11.import net.sf.json.JSONSerializer;12.import net.sf.json.xml.XMLSerializer;13.14.import org.dom4j.Document;15.import org.dom4j.DocumentHelper;16.import org.dom4j.Element;17.import org.dom4j.io.OutputFormat;18.import org.dom4j.io.XMLWriter;19.20./**21. * common xml conver utility22. *23. * @author viruscodecn@24. * @version Framework 2010.10.2625. */26.public class XmlConverUtil {27./**28. * map to xml xml <node><key label="key1">value1</key><key29. * label="key2">value2</key>......</node>30. *31. * @param map32. * @return33. */34.public static String maptoXml(Map map) {35. Document document = DocumentHelper.createDocument();36. Element nodeElement = document.addElement("node");37.for (Object obj : map.keySet()) {38. Element keyElement = nodeElement.addElement("key");39. keyElement.addAttribute("label", String.valueOf(obj));40. keyElement.setText(String.valueOf(map.get(obj)));41. }42.return doc2String(document);43. }44.45./**46. * list to xml xml <nodes><node><key label="key1">value1</key><key47. * label="key2">value2</key>......</node><node><key48. * label="key1">value1</key><key49. * label="key2">value2</key>......</node></nodes>50. *51. * @param list52. * @return53. */54.public static String listtoXml(List list) {55. Document document = DocumentHelper.createDocument();56. Element nodesElement = document.addElement("nodes");57.for (Object o : list) {58. Element nodeElement = nodesElement.addElement("node");59.for (Object obj : ((Map) o).keySet()) {60. Element keyElement = nodeElement.addElement("key");61. keyElement.addAttribute("label", String.valueOf(obj));62. keyElement.setText(String.valueOf(((Map) o).get(obj)));63. }64. }65.return doc2String(document);66. }67.68./**69. * json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver70. * <o><node class="object"><key class="object"71. * label="key1">value1</key></node></o>72. *73. * @param json74. * @return75. */76.public static String jsontoXml(String json) {77.try {78. XMLSerializer serializer = new XMLSerializer();79. JSON jsonObject = JSONSerializer.toJSON(json);80.return serializer.write(jsonObject);81. } catch (Exception e) {82. e.printStackTrace();83. }84.return null;85. }86.87./**88. * xml to map xml <node><key label="key1">value1</key><key89. * label="key2">value2</key>......</node>90. *91. * @param xml92. * @return93. */94.public static Map xmltoMap(String xml) {95.try {96. Map map = new HashMap();97. Document document = DocumentHelper.parseText(xml);98. Element nodeElement = document.getRootElement();99. List node = nodeElement.elements();100.for (Iterator it = node.iterator(); it.hasNext();) { 101. Element elm = (Element) it.next();102. map.put(elm.attributeValue("label"), elm.getText()); 103. elm = null;104. }105. node = null;106. nodeElement = null;107. document = null;108.return map;109. } catch (Exception e) {110. e.printStackTrace();111. }112.return null;113. }114.115./**116. * xml to list xml <nodes><node><key label="key1">value1</key><key 117. * label="key2">value2</key>......</node><node><key118. * label="key1">value1</key><key119. * label="key2">value2</key>......</node></nodes>120. *121. * @param xml122. * @return123. */124.public static List xmltoList(String xml) {125.try {126. List<Map> list = new ArrayList<Map>();127. Document document = DocumentHelper.parseText(xml); 128. Element nodesElement = document.getRootElement(); 129. List nodes = nodesElement.elements();130.for (Iterator its = nodes.iterator(); its.hasNext();) { 131. Element nodeElement = (Element) its.next();132. Map map = xmltoMap(nodeElement.asXML());133. list.add(map);134. map = null;135. }136. nodes = null;137. nodesElement = null;138. document = null;139.return list;140. } catch (Exception e) {141. e.printStackTrace();142. }143.return null;144. }145.146./**147. * xml to json <node><key label="key1">value1</key></node> 转化为148. * {"key":{"@label":"key1","#text":"value1"}}149. *150. * @param xml151. * @return152. */153.public static String xmltoJson(String xml) {154. XMLSerializer xmlSerializer = new XMLSerializer();155.return xmlSerializer.read(xml).toString();156. }157.158./**159. *160. * @param document161. * @return162. */163.public static String doc2String(Document document) {164. String s = "";165.try {166.// 使用输出流来进行转化167. ByteArrayOutputStream out = new ByteArrayOutputStream(); 168.// 使用UTF-8编码169. OutputFormat format = new OutputFormat(" ", true, "UTF-8"); 170. XMLWriter writer = new XMLWriter(out, format);171. writer.write(document);172. s = out.toString("UTF-8");173. } catch (Exception ex) {174. ex.printStackTrace();175. }176.return s;177. }178.179.public static void main(String args[]) {180. XmlConverUtil util = new XmlConverUtil();181. String xml = "{\"node\":{\"key\":{\"@lable\":\"key1\",\"#text\":\"v alue1\"}}}";182. System.out.println(util.jsontoXml(xml));183. }184.}。
java8快速实现List转数组JsonArraymap分组过滤等操作Java 8 引入了许多方便的方法来处理集合,其中包括将 List 转换为数组、处理 JsonArray、对集合进行分组和过滤等操作。
下面将介绍如何快速实现这些操作。
1. List 转数组在 Java 8 中,可以使用 List 接口的 `toArray(T[] a)` 方法将List 转换为数组。
例如,假设有一个包含整数的 List:```javaList<Integer> numbers = new ArrayList<>(;numbers.add(1);numbers.add(2);numbers.add(3);Integer[] arr = numbers.toArray(new Integer[numbers.size(]);```2. 处理 JsonArray对于处理 JsonArray,可以使用 Java 8 提供的 Json 模块。
首先,需要添加以下依赖至 pom.xml 文件:```xml<dependency><groupId>javax.json</groupId><artifactId>javax.json-api</artifactId><version>1.1.4</version></dependency><dependency><groupId>org.glassfish</groupId><artifactId>javax.json</artifactId><version>1.1.4</version></dependency>```然后,可以通过以下方式处理 JsonArray:```javaString jsonStr = "[{\"name\":\"John\", \"age\":25}, {\"name\":\"Jane\", \"age\":30}]";JsonReader jsonReader = Json.createReader(new StringReader(jsonStr));JsonArray jsonArray = jsonReader.readArray(;for (JsonObject jsonObject :jsonArray.getValuesAs(JsonObject.class))String name = jsonObject.getString("name");int age = jsonObject.getInt("age");System.out.println("Name: " + name + ", Age: " + age);```上述代码将输出:```Name: John, Age: 25Name: Jane, Age: 30```3.对集合进行分组在 Java 8 中,可以使用 `Collectors.groupingBy` 方法对集合进行分组。
java将实体类转为json_JavaWeb实体类转为json对象的实现方法在JavaWeb开发中,我们经常需要将实体类转化为JSON对象,以便于在前端页面进行展示或者传输数据。
在本篇文章中,我将介绍如何使用不同的方法将实体类转化为JSON对象。
一、使用Java原生方法实现转化Java原生方法提供了将Java对象转化为JSON对象的工具类,可以将实体类转化为JSON字符串,然后通过JSON字符串转化为JSON对象。
1. 使用Gson库Gson是Google提供的一个Java库,可以方便地将Java对象转化为JSON字符串,并支持将JSON字符串转化为Java对象。
使用Gson库将实体类转化为JSON对象的步骤如下:(1)添加Gson库的依赖在项目中的pom.xml文件中添加Gson库的依赖:```xml<dependency><artifactId>gson</artifactId><version>2.8.6</version></dependency>```(2)在代码中使用Gson库```javaUser user = new User(;user.setId(1);user.setName("张三");user.setAge(20);Gson gson = new Gson(;String jsonString = gson.toJson(user);System.out.println(jsonString);```2. 使用Jackson库Jackson是一个开源的Java库,提供了将Java对象转化为JSON字符串,并支持将JSON字符串转化为Java对象。
使用Jackson库将实体类转化为JSON对象的步骤如下:(1)添加Jackson库的依赖在项目中的pom.xml文件中添加Jackson库的依赖:```xml<dependency><artifactId>jackson-databind</artifactId><version>2.12.4</version></dependency>```(2)在代码中使用Jackson库```javaUser user = new User(;user.setId(1);user.setName("张三");user.setAge(20);ObjectMapper mapper = new ObjectMapper(;String jsonString = mapper.writeValueAsString(user);System.out.println(jsonString);```二、使用Spring MVC框架实现转化Spring MVC是一个基于Java的实现了MVC(Model-View-Controller)模式的Web应用框架,它提供了将实体类转化为JSON对象的方便方法。
关于java中JSONArray、JSONObject、List、String之间的转换本⼈最近⼏个⽉才开始JAVA开发⼯作,以前⼀直做的BI开发,转变的过程都是很艰难的。
新产品开发的过程中,由于新⼈,能⼒有限,遇到了N多困难,幸亏有关系很好的同事在旁边加油打⽓。
有好⼏次我悄悄跟同事说,不⾏了,我坚持不下去了,我就不是开发的料,同事每次都劝我开始都是难的,这段时间过去了你会发现其实没那么难。
是啊,就去登泰⼭,站在⼭脚下我就被它的巍峨吓得望⽽却步,那我怎么可能会登顶看到⽇出。
总嘚努⼒了才有放弃的资格。
于是就这样,坚持了⼏个⽉,现在虽然⾃⼰依然是个菜鸟,但是进步还是很⼤。
可能已经爬到了泰⼭的脚背上。
开发过程中很让⼈头疼的就是各种类型之间的转换,⼀开始真是蒙圈,后来⽤了⼏次好点了,赶紧把⾃⼰记得的写下来,怕以后忘了。
⼀、JASSONArray转为JSONObjectJSONArray result_type = new JSONArray();StringBuffer cdsIdxType = new StringBuffer();cdsIdxType.append(" select id from table_type ");result_type = jdbcTemp.queryForJSONArray(cdsIdxType.toString());JSONObject jsonObject = (JSONObject) result_type.get(i);⼆、JASONArray转为ListJSONArray result_type = new JSONArray();StringBuffer cdsIdxType = new StringBuffer();cdsIdxType.append(" select id from table_type ");result_type = jdbcTemp.queryForJSONArray(cdsIdxType.toString());ArrayList list_type = new ArrayList();for (int i = 0; i < result_type.size(); i++) {JSONObject jsonObject = (JSONObject) result_type.get(i);list_type.add(jsonObject.get("id"));}三、JSONArray转为StringJSONArray result_type = new JSONArray();StringBuffer cdsIdxType = new StringBuffer();cdsIdxType.append(" select id from table_type ");result_type = jdbcTemp.queryForJSONArray(cdsIdxType.toString());String typeAll = "";ArrayList list_type = new ArrayList();for (int i = 0; i < result_type.size(); i++) {JSONObject jsonObject = (JSONObject) result_type.get(i);list_type.add(jsonObject.get("id"));}for(int j=0;j<list_type.size();j++){typeAll = typeAll + "'" + list_type.get(j) + "'" + ",";}typeAll = typeAll.substring(0, typeAll.length() -1);四、String转换为ArrayListString tablecode = request.getParameter("tablecode");tablecode = tablecode.substring(1, tablecode.length()-1).replace("\"", "");String[] list = tablecode.split(",");ArrayList tables = new ArrayList();for(int i=0; i<list.length; i++){tables.add(list[i]);}五.String转JSONObjectString jsonMese = "{\"语⽂\":\"88\",\"数学\":\"78\",\"计算机\":\"99\"}";JSONObject myJson = JSONObject.fromObject(jsonMese);六.String转JSONArrayString jsonMessage = "[{'num':'成绩', '外语':88, '历史':65, '地理':99, 'object':{'aaa':'1111','bbb':'2222','cccc':'3333'}}," + "{'num':'兴趣', '外语':28, '历史':45, '地理':19, 'object':{'aaa':'11a11','bbb':'2222','cccc':'3333'}}," + "{'num':'爱好', '外语':48, '历史':62, '地理':39, 'object': {'aaa':'11c11','bbb':'2222','cccc':'3333'}}]";JSONArray myJsonArray = JSONArray.fromObject(jsonMessage);七.String转数组String string = "a,b,c"; String [] stringArr= string.split(","); //注意分隔符是需要转译如果是"abc"这种字符串,就直接String string = "abc" ; char [] stringArr = string.toCharArray(); //注意返回值是char数组如果要返回byte数组就直接使⽤getBytes⽅法就ok了String string = "abc" ; byte [] stringArr = string.getBytes();⼋、数组转Stringchar[] data={a,b,c};String s=new String(data);注:本⽂是通过⾃⼰的总结和总结他⼈经验得出来的结论,学疏才浅如果错误⼤家可以指出并改正。
java list 转json 方法在Java中,将List转换为JSON有很多方法和工具可以使用。
JSON(JavaScript Object Notation)是一种常用的数据交换格式,它基于键值对的方式存储数据,非常适合在不同平台和语言之间进行数据交互。
以下是一些常见的方法和库,可以将List对象转换为JSON:方法1:使用原生Java使用原生Java转换List对象为JSON需要手动构建JSON字符串。
在Java中,可以使用StringBuilder或StringBuffer来构建字符串,在遍历List对象的过程中,逐个添加元素到字符串中。
Java提供了一些方法,例如JSONObject和JSONArray,用于创建和操作JSON对象和数组。
下面是一个示例代码,演示如何使用原生Java将List对象转换为JSON:```javaimport org.json.JSONArray;import org.json.JSONObject;import java.util.ArrayList;import java.util.List;public class ListToJsonExample {public static void main(String[] args) { //创建一个List对象List<String> list = new ArrayList<>(); list.add("张三");list.add("李四");list.add("王五");//创建一个JSONArray对象JSONArray jsonArray = new JSONArray(); //遍历List,将元素添加到JSONArray中for (String item : list) {jsonArray.put(item);}//创建一个JSONObject对象JSONObject jsonObject = new JSONObject(); //将JSONArray添加到JSONObject中jsonObject.put("items", jsonArray);//将JSONObject转换为JSON字符串String jsonString = jsonObject.toString(); System.out.println(jsonString);}}```输出结果为:{"items":["张三","李四","王五"]}```方法2:使用Gson库Gson是Google提供的一个Java库,用于将Java对象转换为JSON字符串以及将JSON字符串转换为Java对象。
java后端把数据转换为树,map递归⽣成json树,返回给前端(后台转换)java 后端,把数据转换为树,map递归⽣成⼀颗json树,返回给前端(后台转换)1.为什么要写这样的⼀篇博客?2.java 后端代码3. 转化完的数据在前端格式为类似于:1.为什么要写这样的⼀篇博客?在公司的实习的时候,遇到了⼀个略坑的东西,就是要医院的科室通过其⼦⽗id做成⼀颗项⽬树,但是科室的层次有很多,有点甚⾄到了六层,导致最终选择了优化后的递归算法。
如果在三层或者三层以下,可以考虑使⽤内部类,超过三层的话,最好就使⽤递归了,不过记得必须的优化。
2.java 后端代码代码的解释和理解我卸载代码⾥⾯,返回到前端会⾃动转换成Json格式的数据。
//第⼀个参数,需要⽣成树的数组,第⼆个参数为树的根节点public JSONObject getJsontree(JSONArray json,JSONObject job){JSONArray tempJson = JSONArray.fromObject("[]");//筛选出⽗id等于job⾥⾯id的科室for(int i = 0;i < json.size();i++){//这⾥可以使⽤Iteratorif(json.getJSONObject(i).get("parent_id").equals(job.get("unit_sn"))) {tempJson.add(json.getJSONObject(i));};}// 优化,减少科室集合的数量,避免重复查询,有再优化的⽅法,希望告知。
json.removeAll(tempJson);for(int i = 0;i < tempJson.size(); i ++) {//对第⼆层进⾏递归,此处类推getJsontree(json, tempJson.getJSONObject(i));}//⽣成完的树结构map集合加到根节点if(tempJson.size()!=0)job.put("children", tempJson);return job;}3. 转化完的数据在前端格式为类似于:[{ text: '节点1', children: [{ text: '节点1.1' },{ text: '节点1.2' },{ text: '节点1.3', children: [{ text: '节点1.3.1' },{ text: '节点1.3.2' }]},{ text: '节点1.4' }]}]补充知识:java将list转为树形结构的⽅法1、通过转化成json封装数据[{"name":"⽢肃省","pid":0,"id":1},{"name":"天⽔市","pid":1,"id":2},{"name":"秦州区","pid":2,"id":3},{"name":"北京市","pid":0,"id":4},{"name":"昌平区","pid":4,"id":5}]现需要是使⽤java将以上数据转为树形结构,转化后下的结构如下[{"children":[{"children":[{"name":"秦州区","pid":2,"id":3}],"name":"天⽔市","pid":1,"id":2}],"name":"⽢肃省","pid":0,"id":1},{"children":[{"name":"昌平区","pid":4,"id":5}],"name":"北京市","pid":0,"id":4}]代码如下import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;public static JSONArray listToTree(JSONArray arr, String id, String pid, String child) { JSONArray r = new JSONArray();JSONObject hash = new JSONObject();//将数组转为Object的形式,key为数组中的idfor (int i = 0; i < arr.size(); i++) {JSONObject json = (JSONObject) arr.get(i);hash.put(json.getString(id), json);}//遍历结果集for (int j = 0; j < arr.size(); j++) {//单条记录JSONObject aVal = (JSONObject) arr.get(j);//在hash中取出key为单条记录中pid的值String pidStr = "";Object pidObj = aVal.get(pid);if (aVal.get(pid) != null) {pidStr = aVal.get(pid).toString();}JSONObject hashVP = (JSONObject) hash.get(pidStr);//如果记录的pid存在,则说明它有⽗节点,将她添加到孩⼦节点的集合中if (hashVP != null) {//检查是否有child属性if (hashVP.get(child) != null) {JSONArray ch = (JSONArray) hashVP.get(child);ch.add(aVal);hashVP.put(child, ch);} else {JSONArray ch = new JSONArray();ch.add(aVal);hashVP.put(child, ch);}} else {r.add(aVal);}}return r;}public static void main(String[] args){List<Map<String,Object>> data = new ArrayList<>();Map<String,Object> map = new HashMap<>();map.put("id",1);map.put("pid",0);map.put("name","⽢肃省");data.add(map);Map<String,Object> map2 = new HashMap<>();map2.put("id",2);map2.put("pid",1);map2.put("name","天⽔市");data.add(map2);Map<String,Object> map3 = new HashMap<>();map3.put("id",3);map3.put("pid",2);map3.put("name","秦州区");data.add(map3);Map<String,Object> map4 = new HashMap<>();map4.put("id",4);map4.put("pid",0);map4.put("name","北京市");data.add(map4);Map<String,Object> map5 = new HashMap<>();map5.put("id",5);map5.put("pid",4);map5.put("name","昌平区");data.add(map5);System.out.println(JSON.toJSONString(data));JSONArray result =listToTree(JSONArray.parseArray(JSON.toJSONString(data)),"id","pid","children");System.out.println(JSON.toJSONString(result));}以上这篇java后端把数据转换为树,map递归⽣成json树,返回给前端(后台转换)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
Java构造和解析Json数据的两种方法详解一在上公布了很多JAVA下的json构造和解析工具,其中org.json 和json-lib比较简单,两者使用上差不多但还是有些区别。
下面首先介绍用json-lib 构造和解析Json数据的方法示例。
用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二一、介绍JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网/上有详细讲解,有兴趣的可以去研究。
二、下载jar依赖包:可以去这里下载三、基本方法介绍1. List集合转换成json方法List list = new ArrayList();list.add( "first" );list.add( "second" );JSONArray jsonArray2 = JSONArray.fromObject( list );2. Map集合转换成json方法Map map = new HashMap();map.put("name", "json");map.put("bool", Boolean.TRUE);map.put("int", new Integer(1));map.put("arr", new String[] { "a", "b" });map.put("func", "function(i){ return this.arr[i]; }");JSONObject json = JSONObject.fromObject(map);3. Bean转换成json代码JSONObject jsonObject = JSONObject.fromObject(new JsonBean());4. 数组转换成json代码boolean[] boolArray = new boolean[] { true, false, true }; JSONArray jsonArray1 = JSONArray.fromObject(boolArray);5. 一般数据转换成json代码JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );6. beans转换成json代码List list = new ArrayList();JsonBean2 jb1 = new JsonBean2();jb1.setCol(1);jb1.setRow(1);jb1.setValue("xx");JsonBean2 jb2 = new JsonBean2();jb2.setCol(2);jb2.setRow(2);jb2.setValue("");list.add(jb1);list.add(jb2);JSONArray ja = JSONArray.fromObject(list);四、演示示例这里以基本的几个常用方法进行测试package com.json;import java.util.ArrayList;import java.util.HashMap;importjava.util.List;import java.util.Map;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/*** 使用json-lib构造和解析Json数据** @author Alexia* @date 2013/5/23**/public class JsonTest {/*** 构造Json数据** @return*/public static String BuildJson() {// JSON格式数据解析对象JSONObject jo = new JSONObject();// 下面构造两个map、一个list和一个Employee对象Map<String, String> map1 = new HashMap<String, String>(); map1.put("name", "Alexia");map1.put("sex", "female");map1.put("age", "23");Map<String, String> map2 = new HashMap<String, String>(); map2.put("name", "Edward");map2.put("sex", "male");map2.put("age", "24");List<Map> list = new ArrayList<Map>();list.add(map1);list.add(map2);Employee employee = new Employee();employee.setName("wjl");employee.setSex("female");employee.setAge(24);// 将Map转换为JSONArray数据JSONArray ja1 = JSONArray.fromObject(map1);// 将List转换为JSONArray数据JSONArray ja2 = JSONArray.fromObject(list);// 将Bean转换为JSONArray数据JSONArray ja3 = JSONArray.fromObject(employee);System.out.println("JSONArray对象数据格式:");System.out.println(ja1.toString());System.out.println(ja2.toString());System.out.println(ja3.toString());// 构造Json数据,包括一个map和一个Employee对象jo.put("map", ja1);jo.put("employee", ja2);System.out.println("\n最终构造的JSON数据格式:");System.out.println(jo.toString());return jo.toString();}/*** 解析Json数据** @param jsonString Json数据字符串*/public static void ParseJson(String jsonString) {// 以employee为例解析,map类似JSONObject jb = JSONObject.fromObject(jsonString);JSONArray ja = jb.getJSONArray("employee");List<Employee> empList = new ArrayList<Employee>();// 循环添加Employee对象(可能有多个)for (int i = 0; i < ja.size(); i++) {Employee employee = new Employee();employee.setName(ja.getJSONObject(i).getString("name")); employee.setSex(ja.getJSONObject(i).getString("sex")); employee.setAge(ja.getJSONObject(i).getInt("age"));empList.add(employee);}System.out.println("\n将Json数据转换为Employee对象:");for (int i = 0; i < empList.size(); i++) {Employee emp = empList.get(i);System.out.println("name: " + emp.getName() + " sex: "+ emp.getSex() + " age: " + emp.getAge());}}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubParseJson(BuildJson());}}运行结果如下五、与org.json比较json-lib和org.json的使用几乎是相同的,我总结出的区别有两点:1. org.json比json-lib要轻量得多,前者没有依赖任何其他jar包,而后者要依赖ezmorph和commons的lang、logging、beanutils、collections等组件2. json-lib在构造bean和解析bean时比org.json要方便的多,json-lib可直接与bean互相转换,而org.json不能直接与bean相互转换而需要map作为中转,若将bean转为json数据,首先需要先将bean转换为map再将map转为json,比较麻烦。
JavaBean,List,Map转成json格式Java代码1. public class User {2.3. private String username;4. private String password;5.6. public String getUsername() {7. return username;8. }9. public void setUsername(String username) {10. ername = username;11. }12. public String getPassword() {13. return password;14. }15. public void setPassword(String password) {16. this.password = password;17. }18.19. }普通JavaBean(以User为例)转成json格式1.转成JSONArray类型User user = new User();user.setUsername("cxl");user.setPassword("1234");JSONArray json = JSONArray.fromObject(user);System.out.println(json);//[{"password":"1234","username":"cxl"}]response.getWriter().print(json.toString());在js⽂件取数据$.getJSON("http://localhost:8080/jQueryDemo/servlet/UserServlet",null,function(data) {alert(data[0].username);alert(data[0].password);});2.转成JSONObject类型JSONObject jsonObj = JSONObject.fromObject(user);System.out.println(jsonObj);//{"password":"1234","username":"cxl"}response.getWriter().print(jsonObj);在js⽂件取数据alert(ername);alert(data.password);List转成json格式List<User> users = new ArrayList<User>();User user = new User();user.setUsername("cxl");user.setPassword("1234");User u = new User();u.setUsername("lhl");u.setPassword("1234");users.add(user);users.add(u);1.转成JSONArray类型JSONArray json = JSONArray.fromObject(users);System.out.println(json.toString());//[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}]response.getWriter().print(json.toString());js中取数据:alert(alert(data[0].username));2.转成JSONObject类型不可直接使⽤JSONObject jsonObj = JSONObject.fromObject(users);可通过下列⽅式JSONObject jsonObj = new JSONObject();jsonObj.put("users", users);jsonObj.put("u", u);System.out.println(jsonObj);{"users":[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}],"u":{"password":"1234","username":"lhl"}}response.getWriter().print(jsonObj);js中取数据:alert(ers[0].username);alert(data.u[0].username);Map转成json格式Map<String,Object> map = new HashMap<String,Object>();map.put("users", users);map.put("u", u);1.转成JSONArray类型JSONArray json = JSONArray.fromObject(map);System.out.println(json.toString());//[{"users":[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}],"u":{"password":"1234","username":"lhl"}}] response.getWriter().print(json.toString);js中取数据:alert(data[0].users[0].username);2.转成JSONObject类型JSONObject json = JSONObject.fromObject(map);System.out.println(json);//{"user":[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}],"u":{"password":"1234","username":"lhl"}} response.getWriter().print(json);js中取数据:alert(er[0].username);。
java类转化为json对象⽅式⼀:使⽤jar包,直接转化成json格式,再使⽤outwrite写到jsp中先说说要使⽤到的包commons-beanutils.jar、commons-collections.jar、commons-lang.jar、commons-logging.jar、ezmorph-1.0.6.jar、json-lib-2.4-jdk15.jar代码如下:WareServletList<WareDto1> searchwareli = ws.search_wares(wd);//获取未分页数据if(searchwareli!=null){JSONArray jsonArray = JSONArray.fromObject(searchwareli);PrintWriter out = response.getWriter();out.write(jsonArray.toString());}jsp页⾯$(function(){$.ajax({type:"post",//请求⽅式url:"${ctx}/ware/WaretServlet?action=search_wares_json&WareName=${clause.wareName}&Company=${pany}&Addr=${clause.addr}&SortID=${clause.sortID}",//发送请求地址 dataType:"json",data:{//发送给数据库的数据},//请求成功后的回调函数有两个参数success:function(data,textStatus){var objs=eval(data); //解析json对象var content = "";for(var i=0;i<objs.length;i++){alert(objs[i].wareName);}//alert(content);$('#search_result').html(content);}});});⽅式⼆:使⽤拼接的⽅式,把对象组织成json格式的数据,再使⽤outwrite写到jsp中⼤家知道json的数据格式为{"name":"liming","hobby":['⾜球','篮球','⽻⽑球']}这种格式,所以,同理,把你的对象⾥⾯的数据接接成这种格式,再转化成json对象,也可以达到相同效果(同理,其实不使⽤json格式,使⽤xml的效果不是不⼀样呢,就像ajax⼀样,其实不管采⽤什么⽅式,关键在于最终在前台对数据的解析。
JSON(JavaScript Object Notation):是一种轻量级的数据交换格式一、JSON建构有两种结构:对象和数组1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为{key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
二、具体形式1、对象(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
(2)每个“名称”后跟一个“:”(冒号)(3)“…名称/值‟ 对”之间使用“,”(逗号)分隔例子:表示人的一个对象:{"姓名" : "大憨","年龄" : 24}2、数组是值(value)的有序集合。
(1)一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
(2)值之间使用“,”(逗号)分隔。
例子:一组学生{"学生" :[{"姓名" : "小明" , "年龄" : 23},{"姓名" : "大憨" , "年龄" : 24}]}说明:此Json对象包括了一个学生数组,而学生数组中的值又是两个Json对象。
说了这些基本了解json的数据结构了...补充:在线Json校验格式化工具:/go.php?u=/index.php 三、老样子上次demo这时我的工程结构图:上面引用到的外部库大家网上搜索下载~configdata.json:[javascript]view plaincopy1.[2.true,3.false,4.true5.]Address类:[java]view plaincopy1./**2. * @Title: 创建Address实体类的POJO3. * @Description: TODO(用一句话描述该文件做什么)4. * @author Potter5. * @date 2013-2-18 上午10:16:036. * @version V1.07. */8.9.public class Address {10.private String street;//街道11.private String city;//城市12.private int zip;//邮编13.private String tel;//第一个电话号码14.private String telTwo;//第二个电话号码15.16.public Address() {17. }18.19.public Address(String street, String city, int zip, String tel, String telTwo){20.this.street = street;21.this.city = city;22.this.zip = zip;23.this.tel = tel;24.this.telTwo = telTwo;25. }26.27.public String getStreet() {28.return street;29. }30.31.public void setStreet(String street) {32.this.street = street;33. }34.35.public String getCity() {36.return city;37. }38.39.public void setCity(String city) {40.this.city = city;41. }42.43.public int getZip() {44.return zip;45. }46.47.public void setZip(int zip) {48.this.zip = zip;49. }50.51.public String getTel() {52.return tel;53. }54.55.public void setTel(String tel) {56.this.tel = tel;57. }58.59.public String getTelTwo() {60.return telTwo;61. }62.63.public void setTelTwo(String telTwo) {64.this.telTwo = telTwo;65. }66.}JsonTest类:[java]view plaincopy1.import java.io.File;2.import java.io.FileNotFoundException;3.import java.io.FileReader;4.import java.io.IOException;5.import java.util.ArrayList;6.import java.util.LinkedHashMap;7.import java.util.List;8.import java.util.Map;9.10.import net.sf.ezmorph.bean.MorphDynaBean;11.import net.sf.json.JSONArray;12.import net.sf.json.JSONFunction;13.import net.sf.json.JSONObject;14.15.public class JsonTest {16.17.public static void main(String args[]) {18.//javaArray和json互相转换19. javaArrayAndJsonInterChange();20. System.out.println("-------------------------------------");21.//javaList和json互相转换22. javaListAndJsonInterChange();23. System.out.println("-------------------------------------");24.//javaMpa和Json互转25. javaMapAndJsonInterChange();26. System.out.println("-------------------------------------");27.//javaObject和jsonObject互转28. javaObjectAndJsonInterChange();29. }30.31./**32. * javaArray和json互相转换33. */34.public static void javaArrayAndJsonInterChange() {35.// java 转数组36.boolean[] boolArray = new boolean[] { true, false, true };37. JSONArray jsonArray = JSONArray.fromObject(boolArray);38. String s = jsonArray.toString();39. System.out.println(s);40.41.// 通过json获取数组中的数据42. String result = readJson("configdata");43.44. JSONArray jsonR = JSONArray.fromObject(result);45.int size = jsonR.size();46.for (int i = 0; i < size; i++) {47. System.out.println(jsonR.get(i));48. }49. }50.51./**52. * javaList和json互相转换53. */54.public static void javaListAndJsonInterChange() {55. List list = new ArrayList();56. list.add(new Integer(1));57. list.add(new Boolean(true));58. list.add(new Character('j'));59. list.add(new char[] { 'j', 's', 'o', 'n' });60. list.add(null);61. list.add("json");62. list.add(new String[] { "json", "-", "lib" });63.64.// list转JSONArray65. JSONArray jsArr = JSONArray.fromObject(list);66. System.out.println(jsArr.toString(4));67.68.// 从JSON串到JSONArray69. jsArr = JSONArray.fromObject(jsArr.toString());70.// --从JSONArray里读取71.// print: json72. System.out.println(((JSONArray) jsArr.get(6)).get(0));73. }74.75./**76. * javaMpa和Json互转77. */78.public static void javaMapAndJsonInterChange() {79. Map map = new LinkedHashMap();80. map.put("integer", new Integer(1));81. map.put("boolean", new Boolean(true));82. map.put("char", new Character('j'));83. map.put("charArr", new char[] { 'j', 's', 'o', 'n' });84.// 注:不能以null为键名,否则运行报net.sf.json.JSONException:85.// ng.NullPointerException:86.// JSON keys must not be null nor the 'null' string.87. map.put("nullAttr", null);88.89. map.put("str", "json");90. map.put("strArr", new String[] { "json", "-", "lib" });91. map.put("jsonFunction", new JSONFunction(new String[] { "i" },"alert(i)"));92. map.put("address", new Address("P.O BOX 54534", "Seattle, WA", 42452,"561-832-3180", "531-133-9098"));93.// map转JSONArray94. JSONObject jsObj = JSONObject.fromObject(map);95. System.out.println(jsObj.toString(4));96.97.// 从JSON串到JSONObject98. jsObj = JSONObject.fromObject(jsObj.toString());99.100.//第一种方式:从JSONObject里读取101.// print: json102. System.out.println(jsObj.get("str"));103.// print: address.city = Seattle, WA104. System.out.println("address.city = " + ((JSONObject) jsObj.get("add ress")).get("city"));105.106.107.//第二种方式:从动态Bean里读取数据,由于不能转换成具体的Bean,感觉没有多大用处108. MorphDynaBean mdBean = (MorphDynaBean) JSONObject.toBean(jsObj); 109.// print: json110. System.out.println(mdBean.get("str"));111.//print: address.city = Seattle, WA112. System.out.println("address.city = " + ((MorphDynaBean) mdBean.get( "address")).get("city"));113.114. }115.116./**117. * javaObject和jsonObject互转118. */119.public static void javaObjectAndJsonInterChange(){120. Address address=new Address("P.O BOX 54534", "Seattle, WA", 42452,"561-832-3180", "531-133-9098");121.//object转JSONObject122. JSONObject jsObj = JSONObject.fromObject(address);123. System.out.println(jsObj.toString(4));124.125.//JsonObject转java Object126.127. Address addressResult=(Address) JSONObject.toBean(jsObj, Address.cl ass);128. System.out.println("address.city = "+ addressResult.getCity()); 129. System.out.println("address.street="+addressResult.getStreet()); 130. System.out.println("address.tel = "+ addressResult.getTel()); 131. System.out.println("address.telTwo="+addressResult.getTelTwo()); 132. System.out.println("address.zip="+addressResult.getZip());133. }134.135./**136. * 读取json文件137. * @param fileName 文件名,不需要后缀138. * @return139. */140.public static String readJson(String fileName) {141. String result = null;142.try {143. File myFile = new File("./config/" + fileName + ".json"); 144. FileReader fr = new FileReader(myFile);145.char[] contents = new char[(int) myFile.length()];146. fr.read(contents, 0, (int) myFile.length());147. result = new String(contents);148. fr.close();149. } catch (FileNotFoundException e) {150. e.printStackTrace();151. } catch (IOException e) {152. e.printStackTrace();153. }154.return result;155. }156.}。
Java转JSON串的⼏种⽅式昨天在与对端系统调接⼝的时候,对端系统对我们传过去的json串⽼是处理不了,后来查原因是应为我们传过去的json串⾥有json对象数组,因为我们的json串存在表⾥的,取出来是作为json字符串放到json数组⾥的,所以带了双引号,对端认为是字符串,不是json对象所以处理不了。
[{"cardName":"bankCard1","cardCode":"888888888","cardValue":99999999},{"cardName":"bankCard2","cardCode":"999999999","cardValue":222222222}] 这种是正确的json对象数组,["{"cardName":"bankCard1","cardCode":"888888888","cardValue":99999999}","以下总结⼀下java转JSON串的⼏种⽅式:1、将java对象转成json串2、通过JSONObject⽣成json串3、通过json字符串⽣成json串代码通过阿⾥的fastjson包实现。
代码如下:1、Person类,包含Crad的Listpackage com.doit8.test.jsontest.pojo;import java.util.ArrayList;import java.util.List;public class Person {private String username;private String email;private String sex;private int age;private List<Card> cardList=new ArrayList<Card>();public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public List<Card> getCardList() {return cardList;}public void setCardList(List<Card> cardList) {this.cardList = cardList;}}2、Card类package com.doit8.test.jsontest.pojo;public class Card {private String cardName;private String cardCode;private Integer cardValue;public String getCardName() {return cardName;}public void setCardName(String cardName) {this.cardName = cardName;}public String getCardCode() {return cardCode;}public void setCardCode(String cardCode) {this.cardCode = cardCode;}public Integer getCardValue() {return cardValue;}public void setCardValue(Integer cardValue) {this.cardValue = cardValue;}}3、JSON处理测试类package com.doit8.test.jsontest;import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.doit8.test.jsontest.pojo.Card;import com.doit8.test.jsontest.pojo.Person;/*** JSON转换**/public class App{public static void main( String[] args ){//1。
将Java的List结构通过GSON库转换为JSON的⽅法⽰例public String getJsonData(List<?> list) {Gson gson = new Gson();String jsonstring = gson.toJson(list);return jsonstring;}下⾯我们会有详细的例⼦。
⽰例简单对象转化和带泛型的List转化:实体类:public class Student {private int id;private String name;private Date birthDay;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public Date getBirthDay() {return birthDay;}public void setBirthDay(Date birthDay) {this.birthDay = birthDay;}@Overridepublic String toString() {return "Student [birthDay=" + birthDay + ", id=" + id + ", name="+ name + "]";}}测试类:import java.util.ArrayList;import java.util.Date;import java.util.List;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;public class GsonTest1 {public static void main(String[] args) {Gson gson = new Gson();Student student1 = new Student();student1.setId(1);student1.setName("李坤");student1.setBirthDay(new Date());// //////////////////////////////////////////////////////////System.out.println("----------简单对象之间的转化-------------");// 简单的bean转为jsonString s1 = gson.toJson(student1);System.out.println("简单Bean转化为Json===" + s1);// json转为简单BeanStudent student = gson.fromJson(s1, Student.class);System.out.println("Json转为简单Bean===" + student);// 结果:// 简单Bean转化为Json==={"id":1,"name":"李坤","birthDay":"Jun 22, 2012 8:27:52 AM"}// Json转为简单Bean===Student [birthDay=Fri Jun 22 08:27:52 CST 2012, id=1,// name=李坤]// //////////////////////////////////////////////////////////Student student2 = new Student();student2.setId(2);student2.setName("曹贵⽣");student2.setBirthDay(new Date());Student student3 = new Student();student3.setId(3);student3.setName("柳波");student3.setBirthDay(new Date());List<Student> list = new ArrayList<Student>();list.add(student1);list.add(student2);list.add(student3);System.out.println("----------带泛型的List之间的转化-------------");// 带泛型的list转化为jsonString s2 = gson.toJson(list);System.out.println("带泛型的list转化为json==" + s2);// json转为带泛型的listList<Student> retList = gson.fromJson(s2,new TypeToken<List<Student>>() {}.getType());for (Student stu : retList) {System.out.println(stu);}// 结果:// 带泛型的list转化为json==[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 8:28:52 AM"},{"id":2,"name":"曹贵⽣","birthDay":"Jun 22, 2012 8:28:52 AM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 8:28:52 AM"}] // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=1, name=李坤]// Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=2, name=曹贵⽣]// Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=3, name=柳波]}}执⾏结果:----------简单对象之间的转化-------------简单Bean转化为Json==={"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:10:31 PM"}Json转为简单Bean===Student [birthDay=Fri Jun 22 21:10:31 CST 2012, id=1, name=李坤]----------带泛型的List之间的转化-------------带泛型的list转化为json==[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:10:31 PM"},{"id":2,"name":"曹贵⽣","birthDay":"Jun 22, 2012 9:10:31 PM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 9:10:31 PM"}] Student [birthDay=Fri Jun 22 21:10:31 CST 2012, id=1, name=李坤]Student [birthDay=Fri Jun 22 21:10:31 CST 2012, id=2, name=曹贵⽣]Student [birthDay=Fri Jun 22 21:10:31 CST 2012, id=3, name=柳波]。
java方式的将java对象以及list或者map转化为json数据
学会了在j2ee中使用ajax后,有时候从服务器返回客户端的数据是对象,自己手动拼凑json字符串容易出错,通过谷歌知道了json-lib这个类库,方便的支持java中对象到json 字符串的转化。
看source-forge的json-lib介绍说,需要
jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6
这些jar包的支持,下载下来试了一把,挺好用的,写出来,与大家分享。
代码如下:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
//当是对象的时候
Student student = new Student();
student.setAge(18);
student.setName("zhangsan");
student.setSex("male");
JSONObject jsonObject = JSONObject.fromObject(student);
System.out.println(jsonObject);//输出{"age":18,"name":"zhangsan","sex":"male"}
//当是数组或list的时候
Student[] stus = new Student[5];
List<Student> stuList = new ArrayList<Student>();
for (int i = 0; i < stus.length; i++) {
stus[i] = new Student();
stus[i].setAge(i*10+8);
stus[i].setName("zhang"+i);
stus[i].setSex("male");
//添加到list,一会儿用
stuList.add(stus[i]);
}
JSONArray jsonArray = JSONArray.fromObject(stus);
System.out.println(jsonArray);//和下面打印的结果相同
//结果:[{"age":8,"name":"zhang0","sex":"male"},{"age":18,"name":"zhang1","sex":"male"},{"a ge":28,"name":"zhang2","sex":"male"},{"age":38,"name":"zhang3","sex":"male"},{"ag e":48,"name":"zhang4","sex":"male"}]
JSONArray jsonArrayFromList = JSONArray.fromObject(stuList);
System.out.println(jsonArrayFromList);//和上面打印的结果相同
//当既有对象又有数组的时候
Map<String,Object> map = new HashMap<String,Object>();
Teacher teacher = new Teacher();
teacher.setAge(30);
teacher.setName("laoshi");
teacher.setSex("male");
map.put("teacher", teacher);
map.put("student", stuList);
JSONObject jsonObjectFromMap = JSONObject.fromObject(map);
System.out.println(jsonObjectFromMap);
//结果:
//{"student":[{"age":8,"name":"zhang0","sex":"male"},{"age":18,"name":"zhang1","se x":"male"},{"age":28,"name":"zhang2","sex":"male"},{"age":38,"name":"zhang3","sex" :"male"},{"age":48,"name":"zhang4","sex":"male"}],"teacher":{"age":30,"name":"laosh i","sex":"male"}}
}
}。