json是一种数据格式,便于数据传输、存储、交换
gson是一种组件库,可以把java对象数据转换成json数据格式
本次心得体会,使用gson类库
生成gson对象 
方法1:
 GsonBuilder builder = new GsonBuilder(); //gson格式化工作,用来处理复杂的gson操作
builder.excludeFieldsWithoutExposeAnnotation() //不导出实体中没有用@Expose注解的属性
builder.enableComplexMapKeySerialization() //支持Map的key为复杂对象的 
builder.serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")//时间转化为特定格式
builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//会把字段首字母大写,注:对于实体上使用了@SerializedName注解的不会生效.        
builder.disableHtmlEscaping(); //可以生成带单引号等特殊字符json   
builder.setPrettyPrinting() //对json结果格式化.  
builder.setVersion(1.0)    //有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化.实现版本号下面二种方式  
1.	                            //@Since(版本号)能完美地实现这个功能.还的字段可能,随着版本的升级而删除,那么  
2.	                            //@Until(版本号)也能实现这个功能,GsonBuilder.setVersion(double)方法需要调用.  

  Gson gson=builder.create();
方法2: Gson gson=new Gson();  //这样生成,无法生成单引号等特殊字符

生成或解析json数据
Json的规格非常简单,只用一个页面几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升级,因为该规定的都规定了。
1) 并列的数据之间用逗号(",")分隔。
2) 映射用冒号(":")表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号("{}")表示。
5.所有值都是用””括起来的,有其他符号,要替换
生成map json 



Map<String,Object> liut=new LinkedHashMap<String,Object>();
          liut.put("resStr", bjson);
          String tjson=gson.toJson(liut,new TypeToken<Map<String, Object>>(){}.getType());
List json
 List<haha> t=new ArrayList();
          bb1.setItem("1");
          bb1.setValue("行不行");
          bb2.setItem("2");
          bb2.setValue("不行");
          t.add(bb1);
          t.add(bb2);
          //a1.setAa(aa1);
          String bjson=gson.toJson(t);
//输出结果:[{"item":"1","value":"行不行"},{"item":"2","value":"不行"}]
解析 json字符串如下:
{"resStr":"{'result': [{\"item\":\"ITEM\",\"value\":\"查验结果:查验失败。您输入的开票金额与实际发票不符!\"}]}"}
带\的都是进行了,两次tojson操作,生成的串,将单引号,换成双引号,可正常解析



以上心得来自同事lhl

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:24 天前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐