Json字符串解析到具有多个对象的java对象 [英] Json string parsing to java object with multiple objects

查看:128
本文介绍了Json字符串解析到具有多个对象的java对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  {
entry:132456 ,
product:{
item:123456,
prompts:[
{
promptId:1,
promptNumber:109,
promptType:4,
promptTypeDesc:desc1,
验证:[
{
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;
私人产品产品;
//添加setter和getters

/ *产品是内部类* /
public static Product {
private String item;
私人列表<提示>提示;
//添加getter和setters

/ *提示内部类* /
public static提示符{
private String promptId;
private String promptNumber;
私人列表<验证>验证;
// getters和setters


/ *验证内部类* /
public static Validation {
private int maxLen;
private int minLen;
需要私有布尔值;
//添加getters和setters
} //结束验证类
} //提示类结束
} //产品结束
} //结束的信息



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

有人可以请我改正

解决方案

试试这个JSON:

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





使用这个Java Class:

  import java.util.List; 

公开课信息{

私人字符串入口;
私人产品产品;

public class Product {

private String item;
私人列表<提示>提示;

公共类提示{

private String promptId;
private String promptNumber;
private int promptType;
private String promptTypeDes;
私人列表<验证>验证;

公共类验证{

private int maxLen;
private int minLen;
需要私有布尔值;






$ p

像一个魅力

  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);

字符串jsonOutput = gson.toJson(item);
System.out.println(jsonOutput);
}

输出:

 运行:
{
entry:132456,
product:{
item:123456,
prompts:[
{
promptId:1,
promptNumber:109,
promptType:4,
验证:[
{
maxLen:10,
minLen:10,
required:true
}
]
}
]
}
}
建立成功(总时间:0秒)


Trying to parse the following json string to java object using gson

{
    "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 
                    } 
                ] 
            } 
        ]
    }
}

I have my java classes as

 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

I am getting Prompt object as null after converting.

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

Can someone please correct me

解决方案

Try this JSON:

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

With this Java Class:

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;
            }
        }
    }
}

Works like a charm

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);
}

Output:

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)

这篇关于Json字符串解析到具有多个对象的java对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆