名称是正则表达式时的JSON解析(日期)

时间:2011-05-19 13:43:43

标签: java json date

道歉,如果主题标题不准确,我真的不知道如何表达它(没有双关语意)。 我必须用类似于下面的结构来解析JSON。文件中有几个这样的Date数组:每个数组都以yyyy-MM-dd形式的日期命名,但我不确切知道文件中的日期(因此我无法通过其名称)。我怎么能得到它? 我正在使用json.simple for Java来解析文件。我不希望有一个答案告诉我如何使用该库专门做,但如果有人知道,这将是一个奖励:)

"2011-05-15":[
     {
        "promoted_content":null,
        "events":null,
        "query":"AnahiHappyBDay",
        "name":"AnahiHappyBDay"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Puerto Ricans",
        "name":"Puerto Ricans"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Epic Movie",
        "name":"Epic Movie"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Lee Soonkyu",
        "name":"Lee Soonkyu"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"MC1123",
        "name":"MC1123"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Dominique Strauss-Kahn",
        "name":"Dominique Strauss-Kahn"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"WeLoveNickJonas",
        "name":"WeLoveNickJonas"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Ripper Stefan",
        "name":"Ripper Stefan"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Luc\u00eda P\u00e9rez",
        "name":"Luc\u00eda P\u00e9rez"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"DB5K",
        "name":"DB5K"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"WeSupportYouGomez",
        "name":"WeSupportYouGomez"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"LSnoAltasHoras",
        "name":"LSnoAltasHoras"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Azerbaijan",
        "name":"Azerbaijan"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Eurovision",
        "name":"Eurovision"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Derek Boogaard",
        "name":"Derek Boogaard"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Terry Wogan",
        "name":"Terry Wogan"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"FMI",
        "name":"FMI"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"WorldLovesSwift",
        "name":"WorldLovesSwift"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"WorldWarIV",
        "name":"WorldWarIV"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Jedward",
        "name":"Jedward"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"GAGA10MILLION",
        "name":"GAGA10MILLION"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Stefan Raab",
        "name":"Stefan Raab"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Manchester United Campe\u00f3n",
        "name":"Manchester United Campe\u00f3n"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Derek Mooney",
        "name":"Derek Mooney"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Chord Overstreet",
        "name":"Chord Overstreet"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"IMF",
        "name":"IMF"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Joe Buck",
        "name":"Joe Buck"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043d",
        "name":"\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043d"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"Wango Tango",
        "name":"Wango Tango"
     },
     {
        "promoted_content":null,
        "events":null,
        "query":"AlwaysRihannaNavy",
        "name":"AlwaysRihannaNavy"
     }
  ],

2 个答案:

答案 0 :(得分:1)

我不太确定,如果我理解你的问题,但我想你想要一个日期键列表。

使用json.simple进行解析会产生一个JSONObject,这是一个地图,所以它的keySet()方法会为你提供所需的东西:

JSONObject<String, Object> obj = (JSONObject<String, Object>)JSONValue.parse(s);
for (String key in obj.keySet()) {
  // do something with key
}

答案 1 :(得分:0)

其实我不太明白你的意思是什么...... 但是,我认为我有一个解决方案[使用GSON(来自Google的lib)] 看完你的数据后,我想我们可以创建一个类。像这样

public class Foo{
  private Date date/* or ID ?*/;
  private List<Content> contents; //a class defined blow
  /* constructors and methods */
}

public class Content{
  private String promoted_content;// Or a class? I'm not sure, because I found all of them is null
  private String events;// same as promoted_content
  private String query;
  private String name;    
  /* constructors and methods */
}

现在,使用gson解析您的数据。像这样

Gson gson = new Gson();//maybe you wanna read docs of gson for more detail
Foo foo = gson.fromjson(/*your data*/, Foo.class);

在这里,您知道有一个名为Foo的对象,您可以获取其值。我注意到你说也许有一个以上的“日期”,所以我们可以创建一个包含List的新类。