1

关于如何用 gson 处理这种 json 结构的任何想法?或者如果更适应的话,其他库

[{
    "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

嗯。明显的对象定义有什么问题:

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

然后绑定Node[]List<Node>使用 GSON,或其他数据绑定库(如 Jackson)。

于 2012-07-28T17:40:04.410 回答
0

您可以使用 GSON 原始集合 api 手动解析 json。这应该很简单,因为您的结构非常规则。请参阅此处的示例:

于 2012-07-24T21:38:07.110 回答