fastjson

该文章已生成可运行项目,

迭代然后更新JSONArray

   @GetMapping("/update-refund-status")
    @ApiResponse
    @Operation(summary = "用户钱包 交易明细 插入")
    public Boolean updateRefundStatus(String allOrderNo,String refundOrderNo,String userId,String currency,String status) {

         val one = userWalletLogService.lambdaQuery().eq(CdbUserWalletLog::getUserId, userId).eq(CdbUserWalletLog::getCountry, currency)
                .eq(CdbUserWalletLog::getOrderId,allOrderNo).one();
        if (one == null) {
            DingTalkUtils.alarmException(StrUtil.format("用户中心更新退款交易明细,找不到单子allOrderNo:{} refundOrderNo:{} userId:{} currency{}",allOrderNo,refundOrderNo,userId,currency));
            return false;
        }
        final JSONArray more = JSONArray.parseArray(one.getMore());
        for (Object o : more) {
            JSONObject item = (JSONObject)o;
            if (refundOrderNo.equals(item.getString("refundOrderNo"))) {
                item.fluentPut("status",status);
                break;
            }

        }
       return userWalletLogService.lambdaUpdate().set(CdbUserWalletLog::getMore,more.toJSONString()).eq(CdbUserWalletLog::getUserId, userId).eq(CdbUserWalletLog::getCountry, currency)
                .eq(CdbUserWalletLog::getOrderId,allOrderNo).update();

    }

要将一个实体类转换为 com.alibaba.fastjson.JSONObject

YourEntityClass entity = new YourEntityClass(); // 假设这是你的实体类对象

        // 将实体类对象转换为 JSONObject
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(entity);

JSONField

import com.alibaba.fastjson.annotation.JSONField;
/**
 * @Describle:
 * @Author:leiwang15
 */
public class BatchGetRelatedInfo {


    @JSONField(name = "device_sum")
    Integer deviceSum;

    @JSONField(name = "online_sum")
    Integer onlineSum;

你了解json吗

JSON就是一串字符串 只不过元素会使用特定的符号标注。

{} 双括号表示对象

[] 中括号表示数组

“” 双引号内是属性或值
冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

所以 {“name”: “Michael”} 可以理解为是一个包含name为Michael的对象

而[{“name”: “Michael”},{“name”: “Jerry”}]就表示包含两个对象的数组

当然了,你也可以使用{“name”:[“Michael”,“Jerry”]}来简化上面一部,这是一个拥有一个name数组的对象

官方约束

JSON官网最新规范规定,如果是字符串,那不管是键或值最好都用双引号引起来

开发约束

001 :需要进行序列化的实体不要参入其他方法,只是写自己的各种属性。
002:属性名称遵循驼峰命名,正例:fatherName 反例:FATHERNAME
003:使用lombok的@Data进行标注,不用自动生成的get set方法

坑1:

在这里插入图片描述
没有使用驼峰命名,大写的FATHERNMAE变为了fATHERNAME
这个坑可以使用@JSONField(ordinal = 1,name = “BBB”)来解决

坑2:

在这里插入图片描述
在这里插入图片描述
这个坑可以使用lombok的@Data解决

坑3:

在这里插入图片描述
所以,使用json化为字符串的时候要注意这样:
在这里插入图片描述

SerializerFeature

QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null

SerializerFeature.WriteNullStringAsEmpty
想字符类型字段如果为null,转换输出为”“,而非null ,需要多加一个参数:WriteNullStringAsEmpty

null

    Map a = null;
        String jsonString = JSON.toJSONString(a);
        //这里不会有异常
       // jsonString 变为null的字符串
 String b = null;
        JSONObject jsonObject = JSONObject.parseObject(b);
       // 这里没有异常,jsonObject 是个null
本文章已经生成可运行项目
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值