[英]Deserialize JSON object that has no name
我们有一个相当奇怪的JSON有效负载,需要反序列化,但是我不确定如何使用Java和Gson进行处理。
{
"Red": {
"Level 1": "Specify Action",
"Level 2": "Action Taken",
"Level 3": "No Action Taken"
},
"Orange": {
"Level 4": "Defeat Gannon",
"Level 5": "Save Princess",
"Level 6": "Find Triforce"
}
}
我们可以使用HashMap来反序列化单个对象(即“ Red”和“ Orange”),但是我们遇到的问题是试图说明父对象,如代码所示,该对象没有名称可以轻松钩住入。
考虑到您的JSON如下所示:
{
"Red": {
"Level 1": "Specify Action",
"Level 2": "Action Taken",
"Level 3": "No Action Taken"
},
"Orange": {
"Level 4": "Defeat Gannon",
"Level 5": "Save Princess",
"Level 6": "Find Triforce"
}
}
我将使用HashMap,类似下面的Jackson API。 我认为使用GSON也可以完成类似的操作
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{\n" +
" \"Red\": {\n" +
" \"Level 1\": \"Specify Action\",\n" +
" \"Level 2\": \"Action Taken\",\n" +
" \"Level 3\": \"No Action Taken\"\n" +
" },\n" +
" \"Orange\": {\n" +
" \"Level 4\": \"Defeat Gannon\",\n" +
" \"Level 5\": \"Save Princess\",\n" +
" \"Level 6\": \"Find Triforce\"\n" +
" }\n" +
"}";
TypeReference< Map<String, HashMap<String, String>>> typeRef
= new TypeReference<Map<String, HashMap<String, String>>>() {
};
Map<String, HashMap<String, String>> value = mapper.readValue(jsonInString, typeRef);
System.out.println(value);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.