2012-04-20 37 views
5

Câu hỏi tiếp theo cho dịch vụ JSON yên tĩnh của tôi.So sánh một java.util.Map <String, String>

import java.util.Map; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlRootElement; 

/** 
* @author Martin Burchard 
* 
*/ 
@XmlRootElement(name = "user") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class User { 
    private String id; 
    private String nickname; 
    private String email; 
    private String password; 
    private Map<String, String> user_attributes; 

} 

Hiện nay các dịch vụ cung cấp JSON sau (thụt vào để đọc tốt hơn):

{ 
    "user" : { 
     "id" : "9bdf40ea-6d25-4bc3-94ad-4a3d38d2c3ca", 
     "email" : "[email protected]", 
     "password" : "xXpd9Pl-1pFBFuX9E0hAYGSDTyJQPYkOtXGvRCrEtMM", 
     "user_attributes" : { 
      "entry" : [{ 
        "key" : "num", 
        "value" : 123 
       }, { 
        "key" : "type", 
        "value" : "nix" 
       } 
      ] 
     } 
    } 
} 

Những suy nghĩ buồn cười là, trong nội bộ các num 123 là một java.lang.String ...

Tôi không hiểu những gì được giải thích ở đây http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-DealingwithJSONarrayserializationissues

Tôi muốn có JSON này:

{ 
    "user" : { 
     "id" : "9bdf40ea-6d25-4bc3-94ad-4a3d38d2c3ca", 
     "email" : "[email protected]", 
     "password" : "xXpd9Pl-1pFBFuX9E0hAYGSDTyJQPYkOtXGvRCrEtMM", 
     "user_attributes" : { 
      "num" : "123", 
      "type" : "nix" 
     } 
    } 
} 

Tôi đã thay đổi nhà cung cấp JSON thành Jackson. Bây giờ JSON của tôi trông giống như tôi thích nó ...

+0

bạn có chắc là mình cần bản đồ không? bạn không thể có một đối tượng được gọi là thuộc tính người dùng và có danh sách thuộc tính người dùng? –

+0

thuộc tính bổ sung của tôi luôn chứa tên và giá trị, và vì chúng được lưu trữ trong cơ sở dữ liệu, chúng luôn luôn là chuỗi. Tôi nghĩ rằng một Map đơn giản sẽ là đủ. Thay vào đó, tôi có nên sử dụng một Danh sách và một đối tượng thuộc tính có tên và giá trị không? – Nabor

Trả lời

0

Sử dụng thư viện JSON đúng như Jackson

1

Điều duy nhất mà đến với tâm trí của tôi là sử dụng JAXB XmlAdapter. Bạn có thể định nghĩa cách một đối tượng đã cho (trong trường hợp Map của bạn) sẽ được ánh xạ tới chuỗi JSON.

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