Android之FastJSon基本使用,属性首字母大小写的问题

FastJson框架,真的很好用。以下记录,转化的操作方法。

1.配置:在build.gradle(Module:app)中增添引用

//解析json
implementation 'com.alibaba:fastjson:1.2.60'

注:1.2.60之前有重大漏洞:包含"\x"转义符出现OOM。 

 2.具体操作:

  • 实体类或集合转JSON串
String jsonString = JSONObject.toJSONString(实体类);
  • JSON串转JSONObject
JSONObject jsonObject = JSONObject.parseObject(jsonString);
  • JSON串转实体类
实体类 javaBean = JSON.parseObject(json, 实体类.class);
  • JSON串转带泛型的List的集合
List<实体类或其他泛型> list = JSON.parseObject(json, new TypeReference>(){});

 

3.遇到问题:(属性首字母大小写的问题

场景:硬件的同事需要安卓端开发一个APP,进行数据传输,传输格式为Json。我决定使用FastJson进行对自定义NFC信息类转换,key-value都是对方定义的,因此其中key都是首字母大写。

手机使用NFC功能读写都没问题,但是硬件同事发现,写入的数据key的首字母都变成小写了。

原来:转换成Json的时候FastJson的源码会做一段操作,fastjson内部做Bean转换时会使用到 com.alibaba.fastjson.util.TypeUtils,在类加载的时候会去读取环境变量 fastjson.compatibleWithJavaBean。 把对象里面大写属性转换成了小写。

解决方案也有很多,网上查了一下,最好的方法还是在该属性的get方法上添加@JSONField(name = "Name")

代码示例:

//自定义对象

public class NfcBean implements Serializable {
    private int State;
 
    @JSONField(name = "State")
    public int getState() {
        return State;
    }
 
    public void setState(int state) {
        State = state;
    }
}


 转换代码:

String nfcStr = JSONObject.toJSONString(nfcBean);

 

你可能感兴趣的:(Android之开发框架)