【学习笔记】JSON相关

JsonObject的get方法得到的对象是JsonElement对象,然后根据key对应的value类型,分别调用对应的 getAsInt 、getAsString 等方法。

如果key本身不存在的话,get方法返回的JsonElement对象是null,因此会出现空指针异常,所以需要在使用之前确定key本身存在。

JsonObject可以通过getAsJsonObject(String name) 来直接获取 JsonObject对象。

JsonObject可以通过getAsJsonArray(String name) 来直接获取 JsonArray对象。

修改添加属性:使用 addProperty方法,key存在就替换,不存在就添加

使用has方法来判断是否存在key

Java的泛型只在编译时有效,到了运行时这个泛型类型就会被擦除掉,即List<String>和List<Integer>在运行时其实都是List<Object>类型。

TypeToken

Map<Integer, Integer> map = GsonUtil.fromJson(bangDanNumMap, new TypeToken<Map<Integer, Integer>>() {
}.getType());

fastjson相关方法

public static final Object parse(String text);
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject   
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray

转换日期类型(低版本)

JSON.toJSONStringWithDateFormat(obj, DATE_FORMAT)

只要value为空,key值就会被过滤掉

public static String toJSONString(Object object, SerializerFeature... features) {
    return toJSONString(object, DEFAULT_GENERATE_FEATURE, features);
}

SerializerFeature枚举值

QuoteFieldNames输出key时是否使用双引号,默认为true
WriteMapNullValue是否输出值为null的字段,默认为false
WriteNullNumberAsZero数值字段如果为null,输出为0,而非null
WriteNullListAsEmptyList字段如果为null,输出为[],而非null
WriteNullStringAsEmpty字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalseBoolean字段如果为null,输出为false,而非null
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值