2012-04-20 6 views
5

私の安らかなJSONサービスの次の質問です。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; 

} 

現在サービスは、次のJSON(より良い読書のためのインデントを)提供:

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

面白いと思うが

...内部NUM 123はjava.lang.Stringであり、あります

私はこのJSONを持っているとここで説明されているものhttp://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-DealingwithJSONarrayserializationissues

を理解していない:

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

JSONプロバイダをJacksonに変更しました。私はそれを好むよう は今私のJSONは

+0

地図が必要ですか?ユーザー属性と呼ばれるオブジェクトを持つことはできませんし、ユーザー属性のリストはありますか? –

+0

私の追加属性は常に名前と値を含み、データベースに格納されるため、常に文字列です。私は単純なMap で十分だろうと思った。代わりにリストと属性オブジェクトを名前と値で使用する必要がありますか? – Nabor

答えて

0

は私の心に来る唯一のことは、JAXB XmlAdapterのを使用することですJackson

1

のような適切なJSONライブラリを使用して...見えます。指定したオブジェクト(あなたの場合はMap)をJSON文字列にマップする方法を定義することができます。

関連する問題