我想知道是否有任何Java API可用于将POJO对象转换为JSON对象,反之亦然。如何将POJO转换为JSON,反之亦然?
34
A
回答
35
是的,有json.org。看看http://www.json.org/java/index.html
[编辑] 假设你有一个简单的Java类是这样的:
public class Person {
private String name;
private Integer age;
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return this.age; }
public void setAge(Integer age) { this.age = age; }
}
所以,把它改造成JSON对象,这是非常简单的。像这样:
import org.json.JSONObject;
public class JsonTest {
public static void main(String[] args) {
Person person = new Person();
person.setName("Person Name");
person.setAge(666);
JSONObject jsonObj = new JSONObject(person);
System.out.println(jsonObj);
}
}
希望它有帮助。
[编辑] 在这里有另一个例子,在这种情况下,使用杰克逊:https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java/
14
我们还可以使用如下的依赖和插件在你的POM文件 - 我使用的Maven的。通过使用这些,您可以根据您的JSON模式生成POJO,然后使用下面给出的代码通过指定为参数的src对象将请求JSON对象填充到gson.toJson(Object src),反之亦然。看看下面的代码:
Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());
Gson gson2 = new Gson();
Error expectederr = gson2.fromJson(payloadStr, Error.class);
而且Maven的设置:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>1.7.1</version>
</dependency>
<plugin>
<groupId>com.googlecode.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.3.7</version>
<configuration>
<sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
<targetPackage>com.example.types</targetPackage>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
5
如果你是知道的杰克逊2,有在关于如何将Java对象转换成JSON一个伟大的教程反之亦然。以下代码片段已从该教程中获取。
转换Java对象JSON,writeValue(...)
:
ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();
//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
转换JSON到Java对象,readValue(...)
:
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";
//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);
//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);
//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);
杰克逊2相关性:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
有关完整教程,请转到上面给出的链接。
-2
使用GSON将POJO转换为JSONObject。 Refer here.
对于将JSONObject转换为POJO,只需调用POJO中的setter方法并直接从JSONObject中分配值即可。
相关问题
- 1. 如何在Java中将POJO转换为Map,反之亦然?
- 2. 如何将POJO转换为HEX,反之亦然?
- 3. 将JavaUtilDate转换为NSDate,反之亦然?
- 4. 将lonlat转换为xyz,反之亦然
- 5. 将UIImage转换为NSString(反之亦然)
- 6. 将ArrayBuffer转换为Array,反之亦然
- 7. 将HTML转换为Xliff,反之亦然
- 8. 将对象(包含lambda)转换为JSON,反之亦然
- 9. 将xml转换为JSON或反之亦然的库
- 10. 我怎样才能将Xml转换为Json,反之亦然c#
- 11. 将列转换成行,反之亦然
- 12. DTO转换为实体,反之亦然
- 13. 如何将pandas DataFrame转换为字节,反之亦然?
- 14. 如何将Unix时间戳转换为DateTime,反之亦然?
- 15. 如何将矩阵转换为3D数组或反之亦然?
- 16. 如何在Qt中将QVariant转换为QString,反之亦然?
- 17. 如何将坡度转换为度数,反之亦然?
- 18. 如何将Java日期转换为OADate或反之亦然?
- 19. 如何将字符串转换为IP地址,反之亦然
- 20. 如何将Joda-Time DateTime转换为java.util.Date,反之亦然?
- 21. 如何将Bayer转换为使用OpenCV的RGB,反之亦然
- 22. 如何将int []转换为OpenCV Mat? (反之亦然)
- 23. 如何将System :: WideString转换为char *,反之亦然?
- 24. 如何将NSDictionary转换为NSData,反之亦然?
- 25. Java 9 javax.money.MonetaryAmount(JSR 354):无法将Pojo转换为XML,反之亦然
- 26. 将实体对象转换为POJO,反之亦然的最佳方式?
- 27. 转换Unicode字符串,反之亦然
- 28. 如何将十进制转换成二进制,反之亦然
- 29. 将boost shared_ptr转换为void *,反之亦然
- 30. PHP-MYSQL:将Unix时间戳转换为DateTime,反之亦然
Thnx但是...我想如果我有一个Pojo,我可以通过pojo对象,这样的图书馆构造JSON对象...可以做到这一点?你能举个例子吗? thnx很多 – Mariah 2012-03-06 23:47:18
@Bruno如何使用此JSONObject获取List或Set的值。 – 2013-03-19 10:20:37
我喜欢这种方法 - 不幸的是它不适合我。我得到了错误信息:“构造函数JSONObject(Person)未定义”..任何想法为什么?我在一些Android代码中调用它..它是普通的Java。谢谢 – gnB 2015-04-13 23:57:07