2012-03-06 40 views

Trả lời

35

Có, có json.org. Hãy nhìn vào http://www.json.org/java/index.html

[sửa] Hãy tưởng tượng rằng bạn có một lớp Java đơn giản như thế này:

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; } 

} 

Vì vậy, để chuyển đổi nó vào một đối tượng JSON, nó rất đơn giản. Như thế này:

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); 
    } 

} 

Hy vọng điều đó sẽ hữu ích.

[sửa] Ở đây có là một ví dụ khác, trong trường hợp này sử dụng Jackson: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java/

+0

Thnx nhưng ... tôi muốn rằng nếu tôi có một Pojo, tôi có thể vượt qua đối tượng pojo và cách này thư viện xây dựng đối tượng JSON ... có thể gson làm điều đó không? bạn có thể cho tôi một ví dụ không? thnx a lot – Mariah

+0

@Bruno Làm thế nào chúng ta có thể nhận được các giá trị của List hoặc Set bằng cách sử dụng JSONObject này. –

+5

Tôi thích phương pháp này - tiếc là nó không hoạt động cho tôi. Tôi nhận được thông báo lỗi: "Các constructor JSONObject (Person) là không xác định" .. bất kỳ ý tưởng tại sao? Tôi đang gọi nó trong một số mã Android .. nó là đồng bằng Java. Cảm ơn – gnB

14

Chúng tôi cũng có thể tận dụng sự phụ thuộc dưới đây đưa ra và plugin trong tập tin pom của bạn - Tôi tận dụng maven. Với việc sử dụng chúng, bạn có thể tạo POJO theo Lược đồ JSON của bạn và sau đó sử dụng mã được đưa ra dưới đây để điền đối tượng JSON yêu cầu qua đối tượng src được chỉ định làm tham số cho gson.toJson (Object src) hoặc ngược lại. Nhìn vào mã bên dưới:

Gson gson = new GsonBuilder().create(); 
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list()); 

Gson gson2 = new Gson(); 
Error expectederr = gson2.fromJson(payloadStr, Error.class); 

Và các thiết lập 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

Nếu bạn nhận thức được Jackson 2, có một hướng dẫn tuyệt vời tại về cách chuyển đổi Java Objects để JSON và ngược lại. Các đoạn mã sau đã được lấy từ hướng dẫn đó.

Chuyển đổi đối tượng 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); 

Chuyển đổi JSON để đối tượng 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); 

Jackson 2 phụ thuộc:

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.6.3</version> 
</dependency> 

Để biết hướng dẫn đầy đủ, vui lòng truy cập liên kết được nêu ở trên.

-2

Sử dụng GSON để chuyển POJO thành JSONObject. Refer here.

Để chuyển đổi JSONObject thành POJO, chỉ cần gọi phương thức setter trong POJO và gán giá trị trực tiếp từ JSONObject.

Các vấn đề liên quan