0

私はjsonの解析に取り組んでいますが、問題が発生しました。これは私のJSONです:

"cards":[
{
"id":"bgyr6gh5yr6154",
"checkItemStates":[
],
"closed":false,
"desc":"",
"due":"2012-06-13T10:00:00.000Z",
"idBoard":"4v454g5r1515",
"idChecklists":[
],
"idList":"16562562526",
"idMembers":[
"2848f4g85t15"
],
"idShort":15,
"labels":[
],

JSON Array カードのすべての情報を取得できます (例: "closed"、"due" など)。

たとえば、

JSONArray msg2 = (JSONArray) all.get("cards");

それから

String boardId = (String) monobjet.get("closed");

そしてそれはうまくいきます!

しかし

「idMembers」の取得方法がわかりません!配列内の配列なので、何か考えはありますか?

JSONArray msg2 = (JSONArray) all.get("cards");

それから

for (int i2 = 0; i2 < size2; i2++) {
                  myobject =  (JSONObject) msg2.get(i2);

                  listTemp2.add(jsonObecjtToMyData(myobject));
              }


String boardName = (String) monobjet.get("name");
4

1 に答える 1

0

与えられたような複雑な json オブジェクトの場合、すべてのタスクを実行するgsonを強くお勧めします。例:

Gson gson = new GsonBuilder().setPrettyPrinting().create();
Map map = gson.fromJson(inputField.getText(),Map.class);

これで、マップには必要なものがすべて含まれているため、マップを反復処理して idMembers を取得し、それをリストに入れ、それを文字列または適合する任意のデータ型に型キャストします。

個別に型キャストできますが、配列はできません。したがって、これはコンパイルして実行します:

public class MainApp {
    public Object obj[]={"foo","loo"};
    public Object obj2 = "soo";
    public static void main(String[] args) {
        MainApp mainApp = new MainApp();
        String name = (String) mainApp.obj2;
        System.out.println(name);
    }
}

考察の材料:

  1. JSONArray はオブジェクトです。使用している json ハンドラーは、それが JSONArray またはリストであることをどのように認識しますか?
  2. このようなことはできますか?:

    public class MainApp {
        public Object obj[]={"foo","loo"};
        public static void main(String[] args) {
            MainApp mainApp = new MainApp();
            String name[] = (String[])mainApp.obj;
            for(String str : name){
                System.out.println(str);
            }
        }}
    

gson を使用して、多くの手間を省いてください。また、複雑な pojo にはObjectMapperを使用できます。

于 2012-07-19T08:27:37.027 に答える