如何解析该JSON:
{
"foo": {
"bar": {
"baz": "Hello"
},
"qux": "World"
}
}
使用Jackson或其他方法进入该类:
public class Foo {
private String baz;
private String qux;
public String getBaz() {
return baz;
}
public void setBaz(final String baz) {
this.baz = baz;
}
public String getQux() {
return qux;
}
public void setQux(final String qux) {
this.qux = qux;
}
}
期望类似:
@JsonProperty("foo.bar.baz")
private String baz;
@JsonProperty("foo.qux")
private String qux;
注意: 我是 EclipseLink
JAXB(MOXy)的
负责人,并且是
JAXB(JSR-222)
专家组的成员。
Jackson可能无法使用此用例,但是当将MOXy用作JSON绑定提供程序时可以完成此用例。
oo
您可以在此用例中利用MOXy基于路径的映射。
import org.eclipse.persistence.oxm.annotations.XmlPath;
public class Foo {
private String baz;
private String qux;
@XmlPath("foo/bar/baz/text()")
public String getBaz() {
return baz;
}
public void setBaz(final String baz) {
this.baz = baz;
}
@XmlPath("foo/qux/text()")
public String getQux() {
return qux;
}
public void setQux(final String qux) {
this.qux = qux;
}
}
演示版
JAXB运行时API用于读取/写入JSON。
import java.util.*;
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.persistence.jaxb.JAXBContextProperties;
public class Demo {
public static void main(String[] args) throws Exception {
Map<String, Object> properties = new HashMap<String, Object>(2);
properties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
properties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
JAXBContext jc = JAXBContext.newInstance(new Class[] {Foo.class}, properties);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource json = new StreamSource("src/forum15659950/input.json");
Foo foo = unmarshaller.unmarshal(json, Foo.class).getValue();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(foo, System.out);
}
}
input.json /输出
{
"foo" : {
"bar" : {
"baz" : "Hello"
},
"qux" : "World"
}
}
想要查询更多的信息
问题内容: 快速提问。JavaScript中的Eval是不安全的吗?我有一个JSON对象作为字符串,我需要将其转换为实际对象,以便获取数据: 如果有帮助,我正在使用jQuery的$ .ajax方法。 谢谢 问题答案: 好吧,不管是否安全,当您使用jQuery时,最好使用$ .getJSON() 方法,而不是$ .ajax(): 当您仅与自己的服务器通信时,通常被认为是安全的JSON解析,尤其是当您
我已经试过各种方法来解决这个问题了。但没有成功。 我有几节这样的课 在这种情况下,T可以是任何对象,并且应该可以在运行时解析。 Jackson真的无法将json反序列化为泛型类型吗?
我有一个JSON文件,它可以有多种类型。 例如: 我想把它们解析成对象。即,我想创建一个具有所有者/名称/玩具属性的狗对象,以及具有名称/地址属性的人,并使用Jackson通读并从中创建对象。 排序很重要——例如,我需要知道Rex先于John Doe。我更喜欢使用类似流的方法(即。读取并解析Rex到Dog对象中,对其做一些事情,然后丢弃它,然后转到John Doe)。所以我需要一种基于流的方法。
Jackson框架提供了基于注释的方法来在序列化过程中发出类型信息。 我不想在我的超级类(Animal)中使用@JsonSubTypes注释。 相反,我想告诉我的子类,即狗和大象,动物是它们的父母。 有没有任何方法可以在不使用动物类中的注释的情况下做到这一点。 如果是,请提供示例,如果可能的话,也可以这样做。 下面是我试图解决的问题。“test”接收的JSON包含“type”字段,如“dog”或“
问题内容: 我具有以下值: 和以下类: 我想将其解析为a 或a 使用Jackson的 方法最简单? 问题答案: 我终于明白了:
我得到了一个配置好的jackson的ObjectMapper实例,其中应用了一些模块、反序列化器和配置。 我还有一个“平面”json,这意味着要么没有内部节点,要么ObjectMapper能够将内部节点解析为单个对象。 我想将给定的json解析为映射 这就像用解析pojo,然后使用反射收集pojo字段。但是我想避免提取pojo的类,避免使用反射并获取结果Map只存在于json属性中。