2013-07-11 38 views
-1

我在这个格式的JSON文件:如何使用GSON为动态数字字段名称解析JSON?

title 1 
{ 
    "0" : 2, 
    "1" : 5, 
    "2" : 8   
    } 
title 2 
{   
    "1" : 44, 
    "2" : 15, 
    "3" : 73, 
    "4" : 41 
}  

正如你所看到的指标是动态的 - 标题中的1它们分别为:“0”,“1”,“2”和标题2它们是:“1”,“2”,“3”,“4”

我不知道如何使用GSON来读取它。 我需要以某种方式将其转换为java对象,以便我可以继续处理数据。 任何帮助是最受欢迎的。

+0

为什么你需要java对象?我宁愿将其转换为Map,并将其用作地图,而不是作为特殊的Java对象。 –

+0

如何将其转换为MAP? – nafrtiti

回答

0

首先是页面上显示的JSON无效JSON无效,所以我的建议是基于下面的JSON。只是给你完整的披露。

{ 
    "title 1":{ 
     "0":2, 
     "1":5, 
     "2":8 
    }, 
    "title 2":{ 
     "1":44, 
     "2":15, 
     "3":73, 
     "4":41 
    } 
} 

选项1(不是我应该怎样解决这个问题)

这将序列它,你可以扔循环处理一般的对象。

new Gson().fromJson(yourJsonString,Object.class); 

OPTION 2(在我看来最好的选择) 如果你有如何在我的对象凸轮会做这样的事情

{ 
    "listOfTitles":[ 
     { 
     "title":[ 
      { 
       "key":"0", 
       "value":1234 
      }, 
      { 
       "key":"1", 
       "value":12341234 
      }, 
      { 
       "key":"2", 
       "value":123412341234 
      } 
     ], 
     "titleName":"title 1" 
     }, 
     { 
     "title":[ 
      { 
       "key":"0", 
       "value":12341 
      }, 
      { 
       "key":"1", 
       "value":123412 
      }, 
      { 
       "key":"2", 
       "value":12 
      }, 
      { 
       "key":"3", 
       "value":12341 
      } 
     ], 
     "titleName":"title 2" 
     } 
    ] 
} 

控制这将允许你建立类似于对象...

public class YouObjectName{ 
    private ArrayList<Title> listOfTitles; 
    private String titleName; 
    //constructor 

    //getters and setters 
} 

public class Title{ 
    private String key; 

    private Integer value; 

    //constructor 

    //getters and setters 
} 

我会GSON消耗这个喜欢

new Gson().fromJson(jsonString,YouObjectName.class); 

希望有所帮助。

+0

谢谢!这有助于很多! – nafrtiti