Json的几种值形式:{ } 、 [ ] 、 " " 、 ' ' // " " 和 ' ' 为单纯的值,字符串或者数值
对应的JSON对象:JSONObject、JSONArray、……
对应的JAVA对象:HashMap、ArrayList、……
对应构建的Bean:子Bean、List
JSON.parSEObject //将String序列化为JSONObject 对象
JSON.parse //将String序列化为Object对象
JSON.parseArray //将String序列化为JSONArray对象
JSON.parSEObject(Json字符串,Bean.class); //将String序列化为 对应的Bean 对象
JSON.parSEObject(JSONObject 对象.toString(),Bean.class); //将JSONObject 对象转化为 对应的Bean 对象
JSON.parseArray(Json字符串,Bean.class); /将String( [ ] )序列化为 对应的Bean 对象List
JSON.parseArray(JSONArray对象.toString(),Bean.class); //将JSONArray对象转化为 对应的Bean 对象List
(JSONObject或者JSONArray)JSON.toJSON(Bean对象) //将Bean转化为JSONObject对象或者JSONArray对象
JSONObject 对象的toJSONString() 方法
JSONArray 对象的toJSONString() 方法
JSON 的toJSONString 静态方法 ,Object均可
可在形参声明是否生成带格式(即带有缩进和换行)的字符串
默认情况下值为null的Object的字段所生成的字符串不显示
但是如 int 在不赋值的情况下生成的字符串被赋值为0
默认情况下字符串值加的是双引号,如果需要单引号,选择不定形参的方法,形参为SerializerFeature.UseSingleQuotes
默认情况下Date类型输出的值为long型的数值,如果需要格式化输出,选择不定形参的方法,形参为SerializerFeature.WriteDateUseDateFormat
如果需要指定日期格式输出,则使用toJSONStringWithDateFormat方法,在第二个形参指定日期格式,如:"yyyy-MM-dd HH:mm:ss.SSS"
可以加入实参SerializerFeature.WriteClassName 为输出字符串写入类型信息
在序列化过程中,fastjson 可能自作主张的在输出的字符串中改变字段的大小写,在这里可以在字段对应的Get方法前使用@JSONField(name="XXX"),将名字强制的声明为XXX
其他SerializerFeature
SerializerFeature.WriteNullListAsEmpty,// list字段如果为null,输出为[],而不是null
SerializerFeature.WriteNullNumberAsZero,// 数值字段如果为null,输出为0,而不是null
SerializerFeature.WriteNullBooleanAsFalse,// Boolean字段如果为null,输出为false,而不是null
SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null,输出为"",而不是null
泛型的反序列化
Map<String,Bean> map1 = JSON.parSEObject(Json字符串,new TypeReference<Map<String,Bean>>() {});
组合类型集合的反序列化( String text = [{/*header*/},{/*body*/}] )
Type[] types = new Type[] {Header.class,Body.class};
List<Object> list = JSON.parseArray(text,types);
Header header = (Header) list.get(0);
Body body = (Body) list.get(1);
JSONObject 对象的 getXXX 方法,可以获得 { } 内部对应 key 值的 value ,包括JSONObject 对象、JSONArray对象、字符串和各种类型的数值
JSONArray对象的getXXX 方法,可以获得 [ ] 内部对应 index 的value ,包括JSONObject 对象、JSONArray对象、字符串和各种类型的数值