Android json字符串替换value值的问题

JSON字符串如下:{"device_id": "gh_4da91c444fee_8c04d0b766780c62","device_type":"gh_4da91c444fee","msg_type":"notify","data":"jlfjsdlkjflk","services":{"operation_status":{"status": 0},"lightbulb":{"alpha":70}}}我先替换status和alpha的值, 但是每一次更换的值是不固定的,你有什么方法可以替换吗

3个回答

你可以用fastjson,将json字符串转成对象,然后进行数值替换
json对象,在java中其实就是map

     public void test(){
        /*
        {
            "device_id": "gh_4da91c444fee_8c04d0b766780c62",
            "device_type": "gh_4da91c444fee",
            "msg_type": "notify",
            "data": "jlfjsdlkjflk",
            "services": {
                "operation_status": {
                    "status": 0
                },
                "lightbulb": {
                    "alpha": 70
                }
            }
        }
         */
        String jsonStr = "";
                //转换成JSON对象
        JSONObject jsonObj = JSONObject.parseObject(jsonStr);
                //根据key获取对象
        JSONObject services = jsonObj.getJSONObject("services");

        JSONObject operation_status = services.getJSONObject("operation_status");
        operation_status.put("status", 1);

        JSONObject lightbulb = services.getJSONObject("lightbulb");
        lightbulb.put("alpha", 100);

        jsonStr = jsonObj.toJSONString();

    }

先将json字符串解析为对象,再修改对象的属性,再转换为字符串吧。目前第三方的json解析的jar包用起来挺方便的,比如GSON,fastjson。

不如直接反序列化为java对象或JSON对象,然后再修改。
如果一定要通过修改字符串的方式,那就必须使用正则表达式了。 如.replace("\"status\":\d+", "\status\":"+status)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问