如何使用gson将树结构化的json转换为Java对象
问题描述:
[
{
"sentence": "I want to buy shoes .",
"tree": {
"ROOT": [
{
"index": 2,
"token": "want",
"label": "VERB",
"pos": "VBP",
"tree": {
"nsubj": [
{
"index": 1,
"token": "I",
"label": "PRON",
"pos": "PRP"
}
],
"xcomp": [
{
"index": 4,
"token": "buy",
"label": "VERB",
"pos": "VB",
"tree": {
"aux": [
{
"index": 3,
"token": "to",
"label": "PRT",
"pos": "TO"
}
],
"dobj": [
{
"index": 5,
"token": "shoes",
"label": "NOUN",
"pos": "NNS"
}
]
}
}
],
"punct": [
{
"index": 6,
"token": ".",
"label": ".",
"pos": "."
}
]
}
}
]
}
}
]
这是用Json表示的树。但嵌套节点的密钥不断变化。
例如“ROOT,nsubj,xcomp”等。
如何使用gson将上述json代码转换为Java对象。如何使用gson将树结构化的json转换为Java对象
以上响应来自syntaxnet Parsey_Mcparseface api我正在尝试使用。
在此先感谢。
答
Gson有一个方法Gson#fromJson
。例如,这是一个读取简单字符串对象的代码。
Gson gson = new Gson();
String str = gson.fromJson("\"hello\"", String.class);
System.out.println("String: " + str);
您需要准备Java对象来阅读您提出的JSON。但是,你不需要自己编写代码。有一个网站提供自动JSON对象生成器。
输入以下内容:
- 目标语言:Java的
- 源类型:JSON
- Annotation类型:GSON
,并输入你的类名,例如“ParsedSentence”
然后,编写代码。你会得到对象。
Gson gson = new Gson();
ParsedSentence parsed = gson.fromJson(longLongJsonString, ParsedSentence.class);
+0
我已经尝试使用此路线。但是这是问题所在。它为xcomp,aux,punct,dobj等创建类。将会有很多这些键。为每一个类创建一个类是不现实的。我希望有一个解决方案将其解析到Java对象树中。 – amadamala
FYI https://*.com/questions/1957406/generate-java-class-from-json – hiropon
的可能的复制[生成JSON Java类?(https://开头*.com/questions/1957406/generate-java-class-from-json) –
使用像http://www.jsonschema2pojo.org/这样的工具在这种情况下不起作用。因为它会为nsubj,xcomp,aux等创建类以拥有自己的类。 可以有这么多的这些链接。 我的目标是从上面的JSON创建树数据结构。 – amadamala