5

私の安らかな JSON サービスに関する次の質問です。

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" : "test.user@test.de",
        "password" : "xXpd9Pl-1pFBFuX9E0hAYGSDTyJQPYkOtXGvRCrEtMM",
        "user_attributes" : {
            "entry" : [{
                    "key" : "num",
                    "value" : 123
                }, {
                    "key" : "type",
                    "value" : "nix"
                }
            ]
        }
    }
}

面白い考えは、内部的に num 123 が java.lang.String であるということです...

ここで説明されていることがわかりませんhttp://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-DealingwithJSONarrayserializationissues

私はこのJSONが好きです:

{
    "user" : {
        "id" : "9bdf40ea-6d25-4bc3-94ad-4a3d38d2c3ca",
        "email" : "test.user@test.de",
        "password" : "xXpd9Pl-1pFBFuX9E0hAYGSDTyJQPYkOtXGvRCrEtMM",
        "user_attributes" : {
            "num" : "123",
            "type" : "nix"
        }
    }
}

JSON プロバイダーを Jackson に変更しました。今、私のJSONは私が好きなように見えます...

4

2 に答える 2

1

私の頭に浮かぶ唯一のことは、JAXB XmlAdapter を使用することです。特定のオブジェクト (この場合はマップ) を JSON 文字列にマップする方法を定義できます。

于 2012-04-22T20:01:29.237 に答える
0

Jacksonのような適切な JSON ライブラリを使用する

于 2012-04-22T17:55:13.470 に答える