【发布时间】:2015-11-06 10:02:42
【问题描述】:
我想将以下给定数据解析到某个 java 对象中,但我无法解析。字符串如下 -
{\"objectsTree\":\"{\"Address\":[],\"Customer\":[\"Address\"]}\",\"objectsSequence\":\"[\"Customer\",\"Address\"]\"}
我已尝试将其解析为 HashMap 和 HashMap 但这会返回格式错误的 JSON 异常,这是有道理的,因为太多的双引号对象会突然结束。我想将其解析如下-
{
"objectsTree":"{"Address":[],"Customer":["Address"]}",
"objectsSequence":"["Customer","Address"]"
}
在这里您可以看到objectsTree 是一个对象对一个字符串,而objectSequence 是另一个对象。具体来说,对象树应该是树图,对象序列应该是ArrayList。
任何想法我应该如何进行。
代码更新-
包 org.syncoms.backofficesuite.controller;
导入 java.util.HashMap;
导入 com.google.gson.Gson;
公共类测试{
public static void main(String[] args) {
//String json = "{\"Success\":true,\"Message\":\"Invalid access token.\"}";
String json ="{\"objectsTree\":\"{\"Address\":[],\"Customer\":[\"Address\"]}\",\"objectsSequence\":\"[\"Customer\",\"Address\"]\"}";
Gson jsonParser = new Gson();
@SuppressWarnings("unchecked")
HashMap<String,Object> jo = (HashMap<String,Object>) jsonParser.fromJson(json, HashMap.class);
System.out.println(jo);
//Assert.assertNotNull(jo);
//Assert.assertTrue(jo.get("Success").getAsString());
}
}
我得到的错误 -
Exception in thread "main" com.google.gson.JsonParseException: Failed parsing JSON source: java.io.StringReader@201644c9 to Json
at com.google.gson.JsonParser.parse(JsonParser.java:59)
at com.google.gson.Gson.fromJson(Gson.java:443)
at com.google.gson.Gson.fromJson(Gson.java:396)
at com.google.gson.Gson.fromJson(Gson.java:372)
at org.syncoms.backofficesuite.controller.Test.main(Test.java:16)
Caused by: com.google.gson.ParseException: Encountered " <IDENTIFIER_SANS_EXPONENT> "Address "" at line 1, column 19.
Was expecting one of:
"}" ...
"," ...
【问题讨论】:
-
发布重现错误的完整最小代码示例,以及错误的完整堆栈跟踪
-
我在问题中添加了代码和错误,请检查更新的问题
标签: java json parsing hashmap treemap