繁体   English   中英

反序列化没有名称的JSON对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM