2012-03-06 128 views

回答

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/

+0

Thnx但是...我想如果我有一个Pojo,我可以通过pojo对象,这样的图书馆构造JSON对象...可以做到这一点?你能举个例子吗? thnx很多 – Mariah 2012-03-06 23:47:18

+0

@Bruno如何使用此JSONObject获取List或Set的值。 – 2013-03-19 10:20:37

+5

我喜欢这种方法 - 不幸的是它不适合我。我得到了错误信息:“构造函数JSONObject(Person)未定义”..任何想法为什么?我在一些Android代码中调用它..它是普通的Java。谢谢 – gnB 2015-04-13 23:57:07

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中分配值即可。

相关问题