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);
}
我想将字符串转换成 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);
}