我正在使用Jackson将 JSON 数据(我从 Internet 服务器检索)映射到应用程序对象(例如 Artist、Clip、Playlist)。大多数时候数据是静态的,因此我不需要过度加载它 - 所以我想将它存储在数据库中。我需要一个类似于 Jackson 的映射器,它将解析数据库输出并为我构建对象(例如 Artist、Clip、Playlist)。有没有 ?
谢谢。
您正在寻找的是 ORM(对象关系映射)库。这篇文章中对 ORM 解决方案进行了很好的讨论。
使用以下解决方案解决此问题的一种方法。
您可以使用对象关系映射 (ORM) 技术(例如 Hibernate、TopLink)将数据库表映射到 Java 对象。对于从 Java Object 解析为 JSON Object ,您可以使用 JAXB 注释。JaxB 注释类和元帅示例如下。
JaxB 注释 Java 示例
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class UserJaxB {
private String name;
private String id;
public UserJaxB() {
}
@XmlElement(name = "id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
编组示例
import java.io.*;
import javax.xml.bind.*;
import javax.xml.stream.XMLStreamWriter;
import org.codehaus.jettison.mapped.*;
public class MarshalDemo {
public static void main(String[] args) throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(UserJaxB.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
UserJaxB userJaxB = new UserJaxB();
userJaxB.setId("123");
userJaxB.setName("ravi");
Configuration config = new Configuration();
MappedNamespaceConvention con = new MappedNamespaceConvention(config);
Writer writer = new OutputStreamWriter(System.out);
XMLStreamWriter xmlStreamWriter = new MappedXMLStreamWriter(con, writer);
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(userJaxB, xmlStreamWriter);
}
}