1

この種のjson構造をgsonでどのように処理できるかについてのアイデアはありますか?

[{
    "name": "john",
    "link": []
}, {
    "name": "mike",
    "link": [{
        "name": "kate",
        "link": []
    }, {
        "name": "john",
        "link": []
    }]
}, {
    "name": "jane",
    "link": [{
        "name": "tyler",
        "link": [{
            "name": "evan",
            "link": []
        }]
    }]
}]

オブジェクトのリスト (名前、リンク)、これらのオブジェクトの同じ種類のリストをリンクして、
可変の深さがあるようにする

4

3 に答える 3

1

JSON 構造は、多次元配列またはリストの多次元リストに自然に適合します。Gson を使用してデシリアライズするのは比較的簡単です。

import java.io.FileReader;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

public class GsonFoo
{
  public static void main(String[] args) throws Exception
  {
    Gson gson = new GsonBuilder().create();

    // Deserialized as a multidimensional array:
    BarsArray[] barsArray = gson.fromJson(new FileReader("input.json"), BarsArray[].class);
    System.out.println(gson.toJson(barsArray));

    // Deserialized as a multidimensional list of lists:
    List<BarsList> barsList = gson.fromJson(new FileReader("input.json"), new TypeToken<List<BarsList>>(){}.getType());
    System.out.println(gson.toJson(barsList));
  }
}

class BarsArray
{
  String name;
  BarsArray[] link;
}

class BarsList
{
  String name;
  List<BarsList> link;
}
于 2012-07-25T00:57:40.140 に答える
1

うーん。明らかな Object 定義の何が問題になっていますか:

public class Node {
    public String name;
    public Node[] link; // or List<Node>
}

次に、GSON、または他のデータバインディングライブラリ(Jacksonなど)をバインドNode[]または使用します。List<Node>

于 2012-07-28T17:40:04.410 に答える
0

GSON raw コレクション API を使用して、json を手動で解析できます。構造は非常に規則的であるため、これは簡単なはずです。例 については、ここを参照してください。

于 2012-07-24T21:38:07.110 に答える