2

わかりました、些細な命名の問題であった元の質問を理解したので、この質問を実際の問題に転用します。

私はC#でクラスを持っています:

class Test
{
    public string Foo { get; set; }
}

クラスを System.Web.Script.Serialization.JavaScriptSerializer でシリアル化すると、次のようになります。

{"Foo":"Bar"}

Javaにはクラスがあります:

class Test
{
    private String foo;
    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }

JSONを解析するためにGSONを使用しようとしています:

Gson gson = new Gson();
Test test = gson.fromJson(getJson(), Test.class);

しかし、私はヌル値を取得します。

JSON 値をわずかに異なるクラスにマップして、各言語でベスト プラクティスの命名規則を使用できるようにするにはどうすればよいでしょうか。

4

2 に答える 2

3

@SerializedNameアノテーションを使用しています。例:

@SerializedName("Foo")
private String foo;
于 2012-11-12T23:38:40.983 に答える
2

Gson はデフォルトでフィールド名をそのまま使用するため、フィールドには 、 などの名前を付ける必要がありUpTimeますComputerName。ただし、Java の命名の観点からは冒涜的です。

フィールドの名前をJavaスタイルで小文字のキャメルケースとして適切に保持し、GsonにFieldNamingPolicy.UPPER_CAMEL_CASE代わりに使用するように指示します:

Gson gson = new GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
    .create();
Statistics stats = gson.fromJson(response.getJson(), Statistics.class);

または、もちろん、C# 側を小文字のキャメル ケースを出力するように適応させることもできます{"upTime" : ... }

于 2012-11-12T22:51:34.480 に答える