2014-12-19 143 views
1

数组我需要使用GSON解析用下列JSON解析嵌套JSON阵列使用GSON

[ 
    "foo", 
    [ 
     "foot mercato", 
     "football", 
     "foot center", 
     "foorzik", 
     "footao" 
    ] 
] 

在Java。

林价值观真正感兴趣的阵列: 到目前为止,我曾尝试:

String jsonStr = "[" + "\"foo\"," + " [" + " \"foot mercato\"," + " \"football\"," + " \"foot center\"," + 
       " \"foorzik\"," + " \"footao\"" + " ]" + "]"; 

JsonParser parser = new JsonParser(); 
JsonArray array = parser.parse(jsonStr).getAsJsonArray(); 

什么建议吗?

回答

1

一旦你得到你的数组,你可以迭代它的所有元素。

for(JsonElement e : array) { 
    System.out.println(e); 
} 

将输出

"foo" 
["foot mercato","football","foot center","foorzik","footao"] 

如果只想嵌套数组中的值,你可以这样做:

JsonArray nestedArray = parser.parse(jsonStr).getAsJsonArray().get(1).getAsJsonArray(); 
for(JsonElement e : nestedArray) { 
    System.out.println(e); 
} 

将输出

"foot mercato" 
"football" 
"foot center" 
"foorzik" 
"footao" 
1

这可能会有所帮助:

String jsonStr = "[" + "\"foo\"," + " [" + " \"foot mercato\"," + " \"football\"," + " \"foot center\"," 
       + " \"foorzik\"," + " \"footao\"" + " ]" + "]"; 

     Gson gson = new Gson(); 
     ArrayList<Object> dest = new ArrayList<Object>(); 
     dest = gson.fromJson(jsonStr, dest.getClass()); 

     for (Object e : dest) { 
      System.out.println("T:" + e.getClass().getCanonicalName()); 
      if (e instanceof String) { 
       System.out.println(e); 
      } else if (e instanceof ArrayList) { 
       for (String ele : (ArrayList<String>) e) { 
        System.out.println(ele); 
       } 
      } 
     } 

会生成:

T:java.lang.String中

T:java.util.ArrayList中

脚的Mercato

足球

脚中心

foorzik

footao