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<List<实体类或其他泛型>>(){});

// 或者
List<Student> students = JSON.parseArray(json,实体类.class); 

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值