Строка для Json escape вперед sla sh во вложенном json - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу преобразовать строку в JSON. JsonObject of java gson. Строка представляет собой вложенную структуру JSON, в которую добавляется forward-sla sh (), как вы можете видеть в названии его has \\ ". (One \ to escape \ and one \ for".

Как игнорировать внутренний \ и преобразовать в 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"
          }
        ]
      }
    ]
  }
]

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Это подойдет

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);
        }
1 голос
/ 27 февраля 2020

Вы не должны анализировать это как 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...