当前位置: 首页 > 面试题库 >

JSON字符串解析为具有多个对象的Java对象

翟昊明
2023-03-14
问题内容

尝试使用gson将以下json字符串解析为java对象

{
    "entry": "132456",
    "product": {
        "item": "123456",
        "prompts": [
            {
                "promptId": "1",
                "promptNumber": "109",
                "promptType": 4,
                "promptTypeDesc": "desc1",
                "validations": [
                    {
                        "minLen": 10,
                        "maxLen": 10,
                        "required": true
                    } 
                ] 
            },
            {
                "promptId": "2",
                "promptNumber": "110",
                "promptType": 4,
                "promptTypeDesc": "desc2",
                "validations": [
                    {
                        "minLen": 12,
                        "maxLen": 12,
                        "required": true
                    } 
                ] 
            },
            {
                "promptId": "3",
                "promptNumber": "72",
                "promptType": 5,
                "promptTypeDesc": "desc4",
                "validations": [
                    {
                        "required": true 
                    } 
                ] 
            } 
        ]
    }
}

我有我的java类

 public class Info{
        private String entry;
        private Product product;
       // added setters and getters

  /* Product is inner class*/
  public static Product {
      private String item;
      private List<Prompt> prompts;
     // added getters and setters

     /*Prompt inner class*/
     public static Prompt{
        private String promptId;
        private String promptNumber;
        private List<Validation> validations;
        // getters and setters


      /*Validation inner class*/
      public static Validation{
          private int maxLen;
          private int minLen;
          private boolean required;
          // added getters and setters
      } // end of Validation class
    } // end of Prompt class
   } // end of Product
} // End of Info

转换后,我得到的提示对象为空。

       item = gson.fromJson(response, Info.class);

有人可以纠正我吗


问题答案:

试试这个JSON:

{
    "entry": "132456",
    "product": 
    {
        "item": "123456",
        "prompts": 
        [
            {
                "promptId": "1",
                "promptNumber": "109",
                "promptType": 4,
                "promptTypeDesc": "desc1",
                "validations":
                [
                    {
                        "minLen": 10,
                        "maxLen": 10,
                        "required": true 
                    } 
                ] 
            } 
        ] 
    }
}

使用此Java类:

import java.util.List;

public class Info {

    private String entry;
    private Product product;

    public class Product {

        private String item;
        private List<Prompt> prompts;

        public class Prompt {

            private String promptId;
            private String promptNumber;
            private int promptType;
            private String promptTypeDes;
            private List<Validation> validations;

            public class Validation {

                private int maxLen;
                private int minLen;
                private boolean required;
            }
        }
    }
}

奇迹般有效

public static void main(String args[]){

    String input = "{"
            + "\"entry\": \"132456\","
            + "\"product\": {\"item\": \"123456\","
            + "\"prompts\":[{\"promptId\": \"1\","
            + "\"promptNumber\": \"109\","
            + "\"promptType\": 4,"
            + "\"promptTypeDesc\": \"desc1\","
            + "\"validations\":[{\"minLen\": 10,"
            + "\"maxLen\": 10"
            + ",\"required\": true}]}]}}";

    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    Info item = gson.fromJson(input, Info.class);

    String jsonOutput = gson.toJson(item);
    System.out.println(jsonOutput);
}

输出:

run:
{
  "entry": "132456",
  "product": {
    "item": "123456",
    "prompts": [
      {
        "promptId": "1",
        "promptNumber": "109",
        "promptType": 4,
        "validations": [
          {
            "maxLen": 10,
            "minLen": 10,
            "required": true
          }
        ]
      }
    ]
  }
}
BUILD SUCCESSFUL (total time: 0 seconds)


 类似资料:
  • 问题内容: 我的朋友给我发了一个问题,他在一次关于字符串对象的Java认证模拟考试中看到了一个问题: 调用此方法时将创建多少个字符串对象?考试给出的正确答案是3。但是我认为是5。 “嗨” “ 5” “ HI5” “H” “H” 我错了吗? 问题答案: String makeStrings() { String s = “HI”; //String literal s = s + “5”; //co

  • 问题内容: 我有一个.NET中的SOAP Web服务返回的JSON字符串。如下: 现在,我想将此字符串解析为JSON对象。我也看了这个,他们已经用这行代码: 所以我可以通过用我的字符串名称替换“ json”来做到这一点。还需要引用除NewtonSoft.dll以外的任何其他dll吗? 顺便说一句,这是完整的网络服务代码 问题答案: 用 您需要System.Web.Extensions dll并导入

  • 本文向大家介绍VBScript把json字符串解析成json对象的2个方法,包括了VBScript把json字符串解析成json对象的2个方法的使用技巧和注意事项,需要的朋友参考一下 asp/vbscript将json字符解析为json对象的方法,如果asp使用jscript来编写服务器端代码操作json字符串就简单了,vbscript需要MSScriptControl.ScriptControl

  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着18.2。文档中的JSON编码器和解码器,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 你有一个JSON Lines格式的文本文件。你需要逐行解析文件: 每行都包含有效的JSON,但总体而言,它不是有效的JSON值,因为没有顶级列表或对象定义。 请

  • 错误中的SOAP WSDL URL是Spring Boot应用程序中的另一个web服务。试图理解为什么这会出现在错误中。 UnmarshalException:意外元素(URI:“”,local:“message”)。需要的元素是<{http://soap_wsdl_url}jaxb_pojo_name>

  • 你好,我有以下任务: 具有JSON对象的URL: *通过注释定义如何将JSON定义到Java列表中,并找到其中有“名称”的对象。 我认为问题是在不使用任何java库的情况下解析JSON。到目前为止,我已经开发了以下代码: 我在这里做的是我有一个JSONObject类,它将JSON属性存储在映射中,然后我想使用反射来填充任何类。 为了解析JSON,我尝试创建一个迷你FSM(:)),它使用For循环解