JavaBean,List,Map转成json格式
- 格式:pdf
- 大小:131.91 KB
- 文档页数:3
近年来,随着大数据和人工智能技术的快速发展,数据处理和交换的需求也不断增加。
在实际工作中,经常会遇到将数据从一种格式转化为另一种格式的情况。
其中,将map数据结构转化为json格式是一种常见的需求,而本文将深入探讨这一主题,并结合实际案例进行详细分析。
1. map数据结构与json格式的介绍让我们先来了解一下map数据结构和json格式的基本概念。
Map是一种用于存储键值对的数据结构,它提供了通过key快速定位value的能力。
而json(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据结构。
Json由对象和数组组成,对象是无序的键值对集合,数组是值的有序序列。
在实际应用中,将map数据结构转化为json格式可以实现不同系统之间的数据交换和共享。
2. 实际案例分析接下来,我们将通过一个实际案例来演示将map转化为json的过程。
假设我们有一个名为employee的map数据结构,其中存储了员工的基本信息,包括尊称、芳龄和部门。
现在,我们需要将这些信息转化为json格式,以便在网络上进行传输和展示。
我们需要将map中的键值对逐一提取出来,并将其组装成json对象的形式。
代码示例如下:```javaMap<String, Object> employee = new HashMap<>(); employee.put("name", "张三");employee.put("age", 25);employee.put("department", "技术部");// 将map转化为jsonJSONObject json = new JSONObject(employee);System.out.println(json.toString());```上述代码中,我们使用了JSONObject类来将map转化为json格式,并最终打印出了转化后的json字符串。
JSONObject、JSONArray、Map、JavaBean的相互转换1,JSONObjectjson对象,就是⼀个键对应⼀个值,使⽤的是⼤括号{ },如:{key:value}2,JSONArrayjson数组,使⽤中括号[ ],只不过数组⾥⾯的项也是json键值对格式的Json对象中添加的是键值对,JSONArray中添加的是Json对象import net.sf.json.JSONArray;import net.sf.json.JSONObject;import org.junit.Test;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;public class JsonTest {public static void main(String[] args) {//----------------JsonObject创建的⽅法-----------------------------------------------------------//创建JsonObject第⼀种⽅法JSONObject jsonObject = new JSONObject();jsonObject.put("UserName", "kobi");jsonObject.put("age", "34");jsonObject.put("workIn", "ALI");//此处的"ALI"也可以替换为⼀个json{"sex":"男","station":"徐州","hoobey":"coding"}// System.out.println("jsonObject1:" + jsonObject);//jsonObject1:{"UserName":"kobi","workIn":"ALI","age":"34"}Iterator iterator = jsonObject.keys();//⽤Iterator迭代器遍历取值,建议⽤反射机制解析到封装好的对象中while (iterator.hasNext()) {String key = (String) iterator.next();String value = jsonObject.getString(key);System.out.println(value);//输出值 kobi ALI 34}//创建JsonObject第⼆种⽅法HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("UserName", "ZHULI");hashMap.put("age", "30");hashMap.put("workIn", "ALI");// System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));//jsonObject2:{"UserName":"ZHULI","workIn":"ALI","age":"30"}//----------------JSONArray创建的⽅法-----------------------------------------------------------//⼀:遍历JsonArrayString str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]"; // ⼀个未转化的字符串JSONArray json = JSONArray.fromObject(str); // ⾸先把字符串转成 JSONArray 对象if (json.length() > 0) {for (int i = 0; i < json.length(); i++) {JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每⼀个对象转成 json 对象// System.out.println(job);//{"name":"a","value":"aa"} {"name":"b","value":"bb"} {"name":"c","value":"cc"}.....// System.out.println(job.get("name")); // a b c d}}//创建JsonArray⽅法2ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("kobi");arrayList.add("34");arrayList.add("ALI");//System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));//jsonArray2:["kobi","34","ALI"]}@Testpublic void test0105() {/*取出name4值过程步骤: 1.将以上字符串转成JSONArray对象 2.取出对象的第⼀项,JSONObject 3.取出name1的值JSONObject4.然后取出name2的值JSONObject对象5.取出name4的值value2* *//* 记住":"前是键,符号后是值⼤括号成对找⼀层层拨开就清楚了*/String str = "[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]";JSONArray jsonArray = JSONArray.fromObject(str);// 将结果转成JSONArray对象的形式JSONObject getJsonObj = jsonArray.getJSONObject(0);//获取json数组中的第⼀项JSONObject json = getJsonObj.getJSONObject("name1").getJSONObject("name2");//{"name4":"value2","name3":"value1"}Object value = json.get("name4");System.out.println(value);//value2}@Testpublic void test01051() {JSONObject json = new JSONObject();JSONArray jsonArray = new JSONArray();json.put("key", "value");//JSONObject对象中添加键值对jsonArray.put(json);//将JSONObject对象添加到Json数组中System.out.println(json);System.out.println(jsonArray);}}相互转换的⽅法如下,可以运⽤到⽇常的⼯作中去:package com.suning.crawler.util;import net.sf.json.JSONObject;import sun.security.util.Password;import ng.reflect.Method;import java.text.ParseException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;/*** @Author: hoobey* @Description:* @Date: Created in 9:12 2018/1/6* @Modified By:* *转换器* 1:将JavaBean 转换成Map、JSONObject* 2:将JSONObject 转换成Map*/public class BeanConverter {/*** 将javaBean转换成Map** @param javaBean javaBean* @return Map对象*/public static Map<String, String> BeantoMap(Object javaBean) {Map<String, String> result = new HashMap<String, String>();Method[] methods = javaBean.getClass().getDeclaredMethods();for (Method method : methods) {try {if (method.getName().startsWith("get")) {String field = method.getName();//getName getPasswordfield = field.substring(field.indexOf("get") + 3);//Name Passwordfield = field.toLowerCase().charAt(0) + field.substring(1);//name password Object value = method.invoke(javaBean, (Object[]) null);result.put(field, null == value ? "" : value.toString());}} catch (Exception e) {}}return result;}/*** 将json对象转换成Map** @param jsonObject json对象* @return Map对象*/@SuppressWarnings("unchecked")public static Map<String, String> JsontoMap(JSONObject jsonObject) {Map<String, String> result = new HashMap<String, String>();Iterator<String> iterator = jsonObject.keys();String key = null;String value = null;while (iterator.hasNext()) {key = iterator.next();value = jsonObject.getString(key);result.put(key, value);}return result;}/*** 将javaBean转换成JSONObject** @param bean javaBean* @return json对象*/public static JSONObject toJSON(Object bean) {return new JSONObject(BeantoMap(bean));}/*** 将map转换成Javabean** @param javabean javaBean* @param data map数据*/public static Object toJavaBean(Object javabean, Map<String, String> data) {Method[] methods = javabean.getClass().getDeclaredMethods();for (Method method : methods) {try {if (method.getName().startsWith("set")) {String field = method.getName(); //setName setPasswordfield = field.substring(field.indexOf("set") + 3);//Name Passwordfield = field.toLowerCase().charAt(0) + field.substring(1);//name passwordmethod.invoke(javabean, new Object[]{data.get(field)});}} catch (Exception e) {e.printStackTrace();}}return javabean;}/*** 将javaBean转换成JSONObject** @param data javaBean* @return json对象* @throws ParseException json解析异常*/public static void toJavaBean(Object javabean, String data) throws ParseException {JSONObject jsonObject = new JSONObject(data);Map<String, String> datas = BeantoMap(jsonObject);toJavaBean(javabean, datas);}}⽅法调⽤:package com.suning.crawler.util;import net.sf.json.JSONObject;import org.junit.Test;import java.util.HashMap;import java.util.Map;import java.util.Set;/*** @Author: hoobey* @Description:* @Date: Created in 9:16 2018/1/6* @Modified By:*/public class Test0106 {/*javaBean转换成Map*/@Testpublic void test1(){Map<String, String> map = BeanConverter.BeantoMap(new Stu("hoobey","123"));// Map<String, String> map = BeanConverter.toMap(new Stu("hoobey", "213"));// Set<Map.Entry<String, String>> entry = map.entrySet(); //Set集合中存储的是Map.Entry<String, String> entry //推荐使⽤这种map遍历尤其是容量⼤的时候 map.entrySet()返回此映射中包含的映射关系的 Set视图for(Map.Entry<String, String> entry : map.entrySet()){System.out.println("key="+entry.getKey()+",value="+entry.getValue());}}/* * 将json对象转换成Map*/@Testpublic void test2(){JSONObject json =new JSONObject();json.put("hoobey","123"); //{"hoobey":"123"}Map<String, String> toMap = BeanConverter.JsontoMap(json);for(Map.Entry<String, String> entry : toMap.entrySet()){System.out.println("key="+entry.getKey()+",value="+entry.getValue()); }}/*将javaBean转换成JSONObject*/@Testpublic void test3(){JSONObject toJSON = BeanConverter.toJSON(new Stu("hoobey", "123")); System.out.println(toJSON);//{"password":"123","name":"hoobey"}}/*将map转换成Javabean map中存放的键值⼀定和bean相对应*/@Testpublic void test4(){Map<String, String> map = new HashMap<String, String>();map.put("name","hoobey");map.put("password","123");Object o = BeanConverter.toJavaBean(new Stu(), map);System.out.println(o);//Stu{name='hoobey', password='123'}}}。
java中fastjson⽣成和解析json数据(序列化和反序列化数据)本⽂讲解2点:1. fastjson⽣成和解析json数据(举例:4种常⽤类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)2.通过⼀个android程序测试fastjson的⽤法。
fastjson简介:⼀. fastjson⽣成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)String jsonStrng = JSON.toJSONString(object);⼆. fastjson 解析json字符串为四种类型1. JavaBeanPerson person = JSON.parseObject(jsonString, Person.class);2. List<JavaBean>List<Person> listPerson =JSON.parseArray(jsonString, Person.class);3. List<String>List<String> listString = JSON.parseArray(jsonString, String.class);4. List<Map<String,Object>>复制代码代码如下:List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){}); (注意:此处可看出fastjson反射机制⽐gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , ⽽通过gson反射结果为 id =1001.0 ,JSON解析器fastjson(阿⾥巴巴出品,版本1.1.26),如果定义了JSONObject为{"JACKIE_ZHANG":"张学友","ANDY_LAU":"刘德华","LIMING":"黎明","Aaron_Kwok":"郭富城"},那么读取值时,KEY顺序⽆序,测试代码:import comalibabafastjsonJSONObject;/*** Created by wangzhenfei on 14-4-*/public class FastJsonTest {public static void main(String[] args){String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;//做5次测试for(int i=0,j=5;i<j;i++){JSONObject jsonObject = JSONObjectparseObject(jsonStr) ;for(javautilMapEntry<String,Object> entry:jsonObjectentrySet()){Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t");}Systemoutprintln();//⽤来换⾏}}}运⾏结果:LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城解决办法:定义为JSONArray,代码如下:import comalibabafastjsonJSONArray;/*** Created by wangzhenfei on 14-4-*/public class FastJsonTest {public static void main(String[] args){String jsonStr = "[{\"JACKIE_ZHANG\":\"张学友\"},{\"ANDY_LAU\":\"刘德华\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ;//做5次测试for(int i=0,j=5;i<j;i++){JSONArray jsonArray = JSONArrayparseArray(jsonStr);for(int k=0;k<jsonArraysize();k++){Systemoutprint(jsonArrayget(k) + "\t");}Systemoutprintln();//⽤来换⾏}}}运⾏结果为:{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}如果就想要定义为JSONObject,⽽不是JSONArray,可以选⽤其他JSON解析器,个⼈推荐使⽤google的gson,⽂档明显⽐fastjson好很多(从这⾥可以看出阿⾥巴巴和⾕歌的差距):import comgooglegsonJsonElement;import comgooglegsonJsonObject;import comgooglegsonJsonParser;/*** Created by wangzhenfei on 14-4-*/public class FastJsonTest {public static void main(String[] args){String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;//做5次测试for(int i=0,j=5;i<j;i++){JsonObject jsonObject = (JsonObject) new JsonParser()parse(jsonStr);for(javautilMapEntry<String,JsonElement> entry:jsonObjectentrySet()){Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t");}Systemoutprintln();//⽤来换⾏}}}运⾏结果:JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
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();} }。
FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换fastJson对于json格式字符串的解析主要⽤到了⼀下三个类:JSON:fastJson的解析器,⽤于JSON格式字符串与JSON对象及javaBean之间的转换。
JSONObject:fastJson提供的json对象。
JSONArray:fastJson提供json数组对象。
我们可以把JSONObject当成⼀个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的⽅法,⽅便我们对于对象属性的操作。
我们看⼀下源码。
同样我们可以把JSONArray当做⼀个List<Object>,可以把JSONArray看成JSONObject对象的⼀个集合。
此外,由于JSONObject和JSONArray继承了JSON,所以说也可以直接使⽤两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆我们还是使⽤JSON。
⾸先定义三个json格式的字符串,作为我们的数据源。
//json字符串-简单对象型private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";//json字符串-数组类型private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";//复杂格式json字符串private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studen ⽰例1:JSON格式字符串与JSON对象之间的转换。
关于json序列化(javaBean转Json的细节处理)⽬录json序列化(javaBean转Json的细节)三种常见的jsonjar序列化fastjsonJacksonGsonjson序列化的处理还是要从最基础的说起正如上⾯所说的json序列化(javaBean转Json的细节)Java对象在转json的时候,如果对象⾥⾯有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对⽐以下json转换⽅式三种常见的json jar序列化fastjson阿⾥巴巴提供的fastjson,当⽤json转换实体类时--⽆get开头的⽅法,将找不到序列器。
--如果有get开头的⽅法,但是⽆此get⽅法后⾯的字段,也找不到序列器[元数据⼀体化的项⽬落到此坑]。
--证明它与get开头的⽅法有关。
--fastJson在转换java对象为json的时候,fastjson默认转换是不序列化null值对应的key的。
//当字段为基本数据类型时,例如当字段类型为int类型时:private int start;private int limit;// 我如果不set值的时候,会序列化为下⾯这样"limit":0,"start":0默认为都是0了,⽽我的⽬标是如果不设置值的时候,它们不会出现。
我是简单地通过把他们的类型改为Integer了。
应该有其它通过⾃定义序列化⾏为的⽅式来解决,暂不研究。
但是如果想把null对应的key序列化出来呢?那就要仔细看看fastjson转换java对象为json的时候的⼊参了:也就是这个⽅法:JSONObject.toJSONString(Object object, SerializerFeature... features)Fastjson的SerializerFeature序列化属性:QuoteFieldNames:输出key时是否使⽤双引号,默认为trueWriteMapNullValue:是否输出值为null的字段,默认为falseWriteNullNumberAsZero:数值字段如果为null,输出为0,⽽⾮nullWriteNullListAsEmpty:List字段如果为null,输出为[],⽽⾮nullWriteNullStringAsEmpty:字符类型字段如果为null,输出为”“,⽽⾮nullWriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,⽽⾮null结合上⾯,SerializerFeature... features是个数组,那么我们可以传⼊我们想要的参数,⽐如想序列化null,案例如下:public static void main(String[] args) {AutoPartsSearchRequest request = new AutoPartsSearchRequest();request.setKeywords("123");request.setSortingField("234242");String str = JSONObject.toJSONString(request, SerializerFeature.WriteMapNullValue);System.out.println(str);}Jacksonjava开源的Jackson类,也与get开头的⽅法有关【同上】。
常⽤json与javabean互转的⽅法实现JSONObject 与 JSONArray区别JSONObject:{"area": "武汉","name": "张三","age": 25}JSONArray:[{“area”: “武汉”,“name”: “张三”,“age”: 25},{“area”: “深圳”,“name”: “李四”,“age”: 22}]通俗来讲 JSONObject 是对象的json形式 JSONArry 是对象集合的JSON形式。
JSON 与javabean互转JSON⽤阿⾥的fastjson 包⽤例java对象public class User {protected Long id;protected String account;protected String password;protected String name;protected boolean gender;protected String telephone;@Overridepublic String toString() {return "User{" +"id=" + id +", account='" + account + '\'' +", password='" + password + '\'' +", name='" + name + '\'' +", gender=" + gender +", telephone='" + telephone + '\'' +'}';}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public String getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone = telephone;}public String getName() {return name;}public void setName(String name) { = name;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}1、javabean转json⽅法⼀:通过java对象转成String再转成JSONObject package com.handoop.gms.utils;import com.alibaba.fastjson.JSONObject;import er;public class TestMain {public static void main(String []args){//先通过构造函数初始化⼀个对象User user=new User((long) 1,"admin","admin","张三",true,"123456"); //先将java对象转为String类型String jsonString= JSONObject.toJSONString(user);//再将String类型转为JSONObjectJSONObject jsonObject=JSONObject.parseObject(jsonString);System.out.println(jsonObject);//转为JSONObject后就可以随时根据键值获取他的元素了System.out.println(jsonObject.get("password"));}}运⾏结果⽅法2:java对象直接转jsonpackage com.handoop.gms.utils;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import er;public class TestMain {public static void main(String []args){//先通过构造函数初始化⼀个对象User user=new User((long) 1,"admin","admin","张三",true,"123456"); JSONObject jsonObject= (JSONObject) JSONObject.toJSON(user); System.out.println(jsonObject);}}运⾏结果json字符串转JSONObejectpublic class TestMain {public static void main(String []args){String str="{\"password\":\"admin\",\"gender\":true,\"name\":\"张三\",\"telephone\":\"123456\",\"id\":1,\"account\":\"admin\"}";JSONObject jsonObject=JSONObject.parseObject(str);System.out.println("account: "+jsonObject.get("account")+"---"+"paasword: "+jsonObject.get("password"));}}运⾏结果3.jsonString 转JSONArraypublic class TestMain {public static void main(String []args){String str="{\"data\":[{\"password\":\"admin\",\"gender\":true,\"name\":\"张三\",\"telephone\":\"123456\",\"id\":1,\"account\":\"admin\"}]}";//先转成JSONObjectJSONObject jsonObject=JSONObject.parseObject(str);//再将JSONObject中数组类型数据取出转成JSONArrayJSONArray jsonArray=jsonObject.getJSONArray("data");System.out.println(jsonArray.get(0));}}运⾏结果4.JSON字符串转JAVA对象String str="{\"password\":\"admin\",\"gender\":true,\"name\":\"张三\",\"telephone\":\"123456\",\"id\":1,\"account\":\"admin\"}";// 前⾯是JSON字符串后⾯是java对象类型User user=JSONObject.parseObject(str,User.class);System.out.println("account: "+user.getAccount()+"---"+"paasword: "+user.getPassword());输出结果到此这篇关于常⽤json与javabean互转的⽅法实现的⽂章就介绍到这了,更多相关json与javabean互转内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
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对象。
使⽤GSON库将Java中的map键值对应结构对象转换为JSON Map的存储结构式Key/Value形式,Key 和 Value可以是普通类型,也可以是⾃⼰写的JavaBean(本⽂),还可以是带有泛型的List.JavaBean本例中您要重点看如何将Json转回为普通JavaBean对象时TypeToken的定义.实体类:public class Point {private int x;private int y;public Point(int x, int y) {this.x = x;this.y = y;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}@Overridepublic String toString() {return "Point [x=" + x + ", y=" + y + "]";}}测试类:import java.util.LinkedHashMap;import java.util.Map;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.reflect.TypeToken;public class GsonTest3 {public static void main(String[] args) {Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();Map<Point, String> map1 = new LinkedHashMap<Point, String>();// 使⽤LinkedHashMap将结果按先进先出顺序排列map1.put(new Point(5, 6), "a");map1.put(new Point(8, 8), "b");String s = gson.toJson(map1);System.out.println(s);// 结果:[[{"x":5,"y":6},"a"],[{"x":8,"y":8},"b"]]Map<Point, String> retMap = gson.fromJson(s,new TypeToken<Map<Point, String>>() {}.getType());for (Point p : retMap.keySet()) {System.out.println("key:" + p + " values:" + retMap.get(p));}System.out.println(retMap);System.out.println("----------------------------------");Map<String, Point> map2 = new LinkedHashMap<String, Point>();map2.put("a", new Point(3, 4));map2.put("b", new Point(5, 6));String s2 = gson.toJson(map2);System.out.println(s2);Map<String, Point> retMap2 = gson.fromJson(s2,new TypeToken<Map<String, Point>>() {}.getType());for (String key : retMap2.keySet()) {System.out.println("key:" + key + " values:" + retMap2.get(key));}}}结果:[[{"x":5,"y":6},"a"],[{"x":8,"y":8},"b"]]key:Point [x=5, y=6] values:akey:Point [x=8, y=8] values:b{Point [x=5, y=6]=a, Point [x=8, y=8]=b}----------------------------------{"a":{"x":3,"y":4},"b":{"x":5,"y":6}}key:a values:Point [x=3, y=4]key:b values:Point [x=5, y=6]泛型List实体类:import java.util.Date;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 + "]";}}public class Teacher {private int id;private String name;private String title;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 String getTitle() {return title;}public void setTitle(String title) {this.title = title;}@Overridepublic String toString() {return "Teacher [id=" + id + ", name=" + name + ", title=" + title+ "]";}}测试类:package com.tgb.lk.demo.gson.test4;import java.util.ArrayList;import java.util.Date;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;public class GsonTest4 {public static void main(String[] args) {Student student1 = new Student();student1.setId(1);student1.setName("李坤");student1.setBirthDay(new Date());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> stulist = new ArrayList<Student>();stulist.add(student1);stulist.add(student2);stulist.add(student3);Teacher teacher1 = new Teacher();teacher1.setId(1);teacher1.setName("⽶⽼师");teacher1.setTitle("教授");Teacher teacher2 = new Teacher();teacher2.setId(2);teacher2.setName("丁⽼师");teacher2.setTitle("讲师");List<Teacher> teacherList = new ArrayList<Teacher>();teacherList.add(teacher1);teacherList.add(teacher2);Map<String, Object> map = new LinkedHashMap<String, Object>(); map.put("students", stulist);map.put("teachers", teacherList);Gson gson = new Gson();String s = gson.toJson(map);System.out.println(s);System.out.println("----------------------------------");Map<String, Object> retMap = gson.fromJson(s,new TypeToken<Map<String, List<Object>>>() {}.getType());for (String key : retMap.keySet()) {System.out.println("key:" + key + " values:" + retMap.get(key));if (key.equals("students")) {List<Student> stuList = (List<Student>) retMap.get(key);System.out.println(stuList);} else if (key.equals("teachers")) {List<Teacher> tchrList = (List<Teacher>) retMap.get(key);System.out.println(tchrList);}}}}输出结果:{"students":[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:48:19 PM"},{"id":2,"name":"曹贵⽣","birthDay":"Jun 22, 2012 9:48:19 PM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 9:48:19 PM"}],"teachers":[{"id":1,"name":"⽶⽼师","title":"教授"},{"id":2,"name ----------------------------------key:students values:[{id=1.0, name=李坤, birthDay=Jun 22, 2012 9:48:19 PM}, {id=2.0, name=曹贵⽣, birthDay=Jun 22, 2012 9:48:19 PM}, {id=3.0, name=柳波, birthDay=Jun 22, 2012 9:48:19 PM}][{id=1.0, name=李坤, birthDay=Jun 22, 2012 9:48:19 PM}, {id=2.0, name=曹贵⽣, birthDay=Jun 22, 2012 9:48:19 PM}, {id=3.0, name=柳波, birthDay=Jun 22, 2012 9:48:19 PM}]key:teachers values:[{id=1.0, name=⽶⽼师, title=教授}, {id=2.0, name=丁⽼师, title=讲师}][{id=1.0, name=⽶⽼师, title=教授}, {id=2.0, name=丁⽼师, title=讲师}]。
JAVAarray,map转json字符串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后端把数据转换为树,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树,返回给前端(后台转换)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
详谈JSON与Javabean转换的⼏种形式JSON格式的数据传递是最常⽤的⽅法之⼀,以下列出了常⽤的⼏种形态以及与Javabean之间的转换:String json1="{'name':'zhangsan','age':23,'interests':[{'interest':'篮球','colors':['绿⾊','黄⾊']},{'interest':'⾜球','colors':['红⾊','蓝⾊']}]}"; String json2="[{'name':'zhangsan'},{'name':'lisi'},{'name':'王五'}]";String json3="{'1':{'name':'zhangsan'},'3':{'name':'lisi'},'4':{'name':'wangwu'}}";//mapString json4="{'name':'zhangsan','age':23}";⾸先,此处的转化依赖两个JAR包<!-- https:///artifact/com.google.code.gson/gson --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.1</version></dependency><!-- https:///artifact/org.json/json --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20170516</version></dependency>其次,封装的Javabean代码如下import java.util.List;public class UserBean {private String name;private Integer age;private List<InterestBean> interests;public String getName() {return name;}public void setName(String name) { = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public List<InterestBean> getInterests() {return interests;}public void setInterests(List<InterestBean> interests) {this.interests = interests;}class InterestBean{private String interest;private List<String> colors;public String getInterest() {return interest;public void setInterest(String interest) {this.interest = interest;}public List<String> getColors() {return colors;}public void setColors(List<String> colors) {this.colors = colors;}}}1、普通的json4格式的JSON解析:public void testParseJson(){JSONObject jsonObj = new JSONObject(json4);String name = jsonObj.getString("name");int age = jsonObj.getInt("age");System.out.println(name);System.out.println(age);UserBean user = new UserBean();user.setAge(age);user.setName(name);}2、数组形式的JSON解析以及GSON解析:public void testJsonArray(){JSONArray jsonArray = new JSONArray(json2);for (int i = 0; i < jsonArray.length(); i++) {JSONObject jsonObj = jsonArray.getJSONObject(i);String name = jsonObj.getString("name");System.out.println(name);}}/*** 解析json数组*/public void testParseListJson(){Gson gson = new Gson();Type type = new TypeToken<List<UserBean>>(){}.getType();List<UserBean> users = gson.fromJson(json2, type);for(UserBean user:users){System.out.println(user.getName());}}3、内嵌JSON形式的JSON与GSON解析:/*** 内嵌JSON解析*/public void testParseJson1(){JSONObject rootJson = new JSONObject(json1);JSONArray jsonInterestArray = rootJson.getJSONArray("interests"); for (int i = 0; i < jsonInterestArray.length(); i++) {JSONObject interestJsonObj = jsonInterestArray.getJSONObject(i); String interest = interestJsonObj.getString("interest");System.out.println(interest);Object obj = interestJsonObj.get("colors");System.out.println(obj);}}/*** 内嵌GSON解析public void testSimpleJson(){Gson gson = new Gson();UserBean user = gson.fromJson(json1, UserBean.class);System.out.println(user.getName());System.out.println(user.getAge());System.out.println(user.getInterests().size());List<InterestBean> list = user.getInterests();for(InterestBean bean:list) {System.out.println(bean.getInterest());List<String> colors = bean.getColors();for(String color:colors){System.out.println(color);}}}4、Map形式的JSON的GSON解析:/*** 解析⼀个map类型的json*/public void testParseMapJson(){Gson gson = new Gson();Type type = new TypeToken<Map<String,UserBean>>(){}.getType();Map<String,UserBean> map = gson.fromJson(json3, type);Set<String> keys = map.keySet();for(String key:keys){UserBean bean = map.get(key);System.out.println(key);System.out.println(bean.getName());}}5、将⼀个JavaBean对象封装成JSON格式/*** 将⼀个JavaBean对象封装成JSON格式*/public String testJavaBean2Json(){UserBean userBean = new UserBean();userBean.setName("zhangsan");userBean.setAge(33);List<InterestBean> list = new ArrayList<InterestBean>();InterestBean bean1 = new UserBean().new InterestBean();bean1.setInterest("篮球1");InterestBean bean2 = new UserBean().new InterestBean();bean2.setInterest("篮球2");list.add(bean1);list.add(bean2);userBean.setInterests(list);//将User Bean转换成JsonGson gson = new Gson();String jsonStr = gson.toJson(userBean);System.out.println(jsonStr);return jsonStr;}}仅供参考,如有雷同,纯属巧合^_^以上这篇详谈JSON与Javabean转换的⼏种形式就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
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);。
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.}。
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":"1
234","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":"12 34","username":"lhl"}}
response.getWriter().print(json);
js中取数据:alert(er[0].username);。