我该如何解析这种类型的JSON? (只能迭代数组或java.lang.Iterable的实例)

时间:2016-05-13 20:12:01

标签: java json

我正在尝试解析一些JSON(下面的摘录),但是我收到以下错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Can only iterate over an array or an instance of java.lang.Iterable

以及非常大的json文件的摘录:

[
  {
    "normal" : "Le tour change de sens ! Ce n'est pas une action, c'est le joker!"
  },
  {
    "normal" : "Prends la main de ton voisin de gauche"
  },
  {
    "normal" : "Fais une déclaration d'amour à la personne en face de toi!"
  },
  {
    "normal" : "Reste sur les genoux de la personne à ta droite pendant un tour"
  },

自己弄清楚。这是代码:

import org.json.simple.JSONArray;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.json.JSONException;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;


public class ParseJson{


    static String printAcounts = "";
    public static void main(String[] args) throws FileNotFoundException, IOException, ParseException, JSONException{
        JSONParser parser = new JSONParser();
        JSONArray objArray = (JSONArray) parser.parse(new FileReader("C:\\Users\\Bogdanel\\Desktop\\Ressources\\normal_actions.json"));

        for (Object o : objArray){
        JSONObject obj = (JSONObject) o;
        String s = (String) obj.get("normal");
        System.out.println(s);
        }


    }
}

ascasccascascasc

2 个答案:

答案 0 :(得分:4)

请勿混淆org.json.JSONArrayjavax.json.JsonArray。前者没有实现Iterable而后者不实现。

Android对JSONArray的使用就像典型的JSON值一样,但它可以get(index)像集合一样。 JsonArray基本上是List<JsonValue>

简而言之,使用典型的结构并使用get代替。

答案 1 :(得分:0)

JSONArray与常规数组不同,因此您无法使用foreach循环(在Java中为高级循环)进行迭代。你可以参考这个answer,但基本上使用常规for循环并得到像这样的项目

objArray.getJSONObject(i).getString("someKey");