有关如何使用gson处理这种json结构的任何想法,或其他lib如果更适应
[{
"name": "john",
"link": []
}, {
"name": "mike",
"link": [{
"name": "kate",
"link": []
}, {
"name": "john",
"link": []
}]
}, {
"name": "jane",
"link": [{
"name": "tyler",
"link": [{
"name": "evan",
"link": []
}]
}]
}]
对象列表(名称,链接),链接这些对象的同一种列表
所以有可变的深度
答案 0 :(得分: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;
}
答案 1 :(得分:1)
Hmmh。明显的对象定义有什么问题:
public class Node {
public String name;
public Node[] link; // or List<Node>
}
然后使用GSON或其他数据绑定库(如Jackson)绑定Node[]
或List<Node>
。
答案 2 :(得分:0)
您可以使用GSON raw collections api手动解析json。这应该是直截了当的,因为你的结构非常规律。有关示例,请参阅here: