首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GSON问题解析JSON

使用GSON问题解析JSON
EN

Stack Overflow用户
提问于 2014-08-12 20:35:48
回答 1查看 434关注 0票数 1

解析JSON中嵌套的键值对时出现的问题。

JSON结构

代码语言:javascript
复制
 {  
   "data":{  
      "action":"item1",
      "react":"item2",
        "categories":{  
         "Price":{  
            "$0-$10":{  
               "Refine":"false",
               "bcc":"2"               
            },
            "$251-$500":{  
               "Refine":"false",
               "bcc":"2"
            }
         },
         "Gender":{  
            "Girl":{  
              "Refine":"false",
               "bcc":"2"
            },
            "Boy":{  
            "Refine":"false",
               "bcc":"2"
            }
         }
    }
}}

将以下类定义为POJO

代码语言:javascript
复制
class Product
{
public Data data;

public class Data{

   public String action;

   public String react;

   public Map<String,Map<String,request>> categories;

}}

public class request{
  public string Refine;
  public String bcc
}

JSON元素“类别”中的键值对是动态的。

代码语言:javascript
复制
Product responseData = gson.fromJson(jsoninput,
                Product.class);

尝试使用gson和pogo类产品解析上述JSON

  1. 字段动作,反应被解析为正确。
  2. 字段类别返回空Map。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-13 16:09:45

我使用的是GSON版本2.3,从maven下载它。只需创建一个项目,复制其中的所有内容,并设置json文件路径并按RUN:

代码语言:javascript
复制
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;


public class main {
    public static void main(String[] args) {


        Gson gson = new Gson();


        try {

            BufferedReader br = new BufferedReader(
                    new FileReader("your json file path"));

            // Deserialization
            Product obj = gson.fromJson(br, Product.class);


            // Serialization
            gson = new GsonBuilder().setPrettyPrinting().create();
            String json = gson.toJson(obj);
            System.out.println(json);


        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

您的POJO课程:

代码语言:javascript
复制
import java.util.Map;


class Product
{
    public Data data;

    public class Data{

        public String action;

        public String react;

        public class request{
            public String Refine;
            public String bcc;
        }

        public Map<String,Map<String,request>> categories;

    }
}

最后是你的json字符串:

代码语言:javascript
复制
   {
       "data":{  
         "action":"item1",
         "react":"item2",
         "categories":{  
            "Price":{  
               "$0-$10":{  
                  "Refine":"false",
                  "bcc":"2"               
               },
               "$251-$500":{  
                  "Refine":"false",
                  "bcc":"2"
               }
            },
            "Gender":{  
               "Girl":{  
                 "Refine":"false",
                  "bcc":"2"
               },
               "Boy":{  
               "Refine":"false",
                  "bcc":"2"
               }
            }
        }

       }
     }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25273622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档