我们必须解析类似于下面的json结构。
project {
header {
}
pool {
}
cmp {
name = "";
id = "";
desc = "";
cmp [
{
name = "";
id = "";
desc = "";
}
{
name = "";
id = "";
desc = "";
}
{
name = "";
id = "";
desc = "";
cmp [
{
name = "";
id = "";
desc = "";
}
}
}
}
问题是,cmp元素无限存在于json中(并且它也是递归的)。 cmp元素包含除name,id和desc之外的许多属性。但是我们只需要从jSON中提取name,id和desc。
我可以使用com.json.parsers.JSONParser解析JSON字符串。但是将解析的JSON填充到模型类/ bean类是行不通的。这可能是一个简单的逻辑。但是我不能。请帮忙......
生成json文件作为一个建模软件的输出。
我想用java解析它。有人可以帮我解析一下吗?
希望我已正确解释了这个问题。您的帮助将对我们有所帮助。
答案 0 :(得分:2)
您可以使用Jackson执行此操作,只需使用消息中可能存在或可能不存在的所有字段创建对象。消息中不存在的所有字段将在结果对象中以null(或基元的默认值)结束。
让对象包含自身的副本,并处理递归
@XmlRootElement
public class Foo {
Foo recursiveFoo; // will be null or another instance of Foo
int intData; // Will be 0 or an integer value
String strData; // Will be null or a String value
// Getters and setters here
}
答案 1 :(得分:1)
看看Google Gson图书馆。有了它,你可以做以下事情:
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
//(Serialization)
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
//==> json is {"value1":1,"value2":"abc"}
//(Deserialization)
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
//==> obj2 is just like obj