2012-03-06 131 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中分配值即可。

相關問題