Json 的字符串在嵌套 json 中转义正斜杠

String to Json escape forward slash in nested json

我想将字符串转换成 JSON。 Jsonjavagson 的对象。 该字符串是一个嵌套的 JSON 结构,其中添加了正斜杠 (),正如您在名称中看到的那样,它具有 \\"。(一个 \ 用于转义 \,一个 \ 用于 ".

如何忽略内部 \ 并转换为 JSON 对象。我试图用 replaceAll 转义 \\" 但没有用,因为它也替换了 \"

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Test {
    public static void main(String args[]){
        String json = "[{\"key\":\"px\",\"mKeyValues\":[{\"hmKey\":\"qx\",\"value\":\"[{\\"name\\":\\"Test Equipment value\\",\\"status\\":\\"2\\"}]\"}]}]";
        JsonParser jsonParser = new JsonParser();
        json = json.replaceAll("\\","");
        System.out.println(json);
        JsonObject jsonObject = jsonParser.parse(json).getAsJsonObject();
        System.out.println(jsonObject);
    }
}

实际 Json 是

[
  {
    "key": "px",
    "mKeyValues": [
      {
        "hmKey": "qx",
        "value": [
          {
            "name": "Test Equipment value",
            "status": "2"
          }
        ]
      }
    ]
  }
]

你不应该将它解析为 jsonObject,因为它是一个 jsonArray,将其解析为 jsonArray,类似这样

public static void main(String args[]){
        String json = "[{\"key\":\"px\",\"mKeyValues\":[{\"hmKey\":\"qx\",\"value\":\"[{\\"name\\":\\"Test Equipment value\\",\\"status\\":\\"2\\"}]\"}]}]";
        JsonParser jsonParser = new JsonParser();
        json = json.replace("\"[","[").replace("]\"", "]").replace("\\"", "\"");
        System.out.println(json);
        JsonArray jsonObject = jsonParser.parse(json).getAsJsonArray();
        System.out.println(jsonObject);
}

这样就可以了

json = json.replace("\"[","[").replace("]\"", "]").replace("\\"", "\"");

没有替换的解决方案

    public static void main(String[] args) 
            String json = "[{\"key\":\"px\",\"mKeyValues\":[{\"hmKey\":\"qx\",\"value\":\"[{\\"name\\":\\"Test Equipment value\\",\\"status\\":\\"2\\"}]\"}]}]";
            System.out.println(json);
            JsonParser jsonParser = new JsonParser();
            JsonArray jsonObject = jsonParser.parse(json).getAsJsonArray();
            JsonObject mKeyValues0 = jsonObject.get(0).getAsJsonObject()
                    .get("mKeyValues").getAsJsonArray()
                    .get(0).getAsJsonObject();


            mKeyValues0.add("value", jsonParser.parse(mKeyValues0.get("value").getAsString() ));

            System.out.println(jsonObject);
        }