2

Gson を使用してJSON-LDドキュメントを読み書きしようとしています。JSON-LD の例:

{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/workplaceHomepage",
      "@type": "@id"
    },
    "Person": "http://xmlns.com/foaf/0.1/Person"
  },
  "@id": "http://me.markus-lanthaler.com",
  "@type": "Person",
  "name": "Markus Lanthaler",
  "homepage": "http://www.tugraz.at/"
}

私が Gson で抱えている問題は、いくつかのフィールドの先頭に @ を追加することです。@SerializedNameアノテーションを使用してみましたが、エラーが発生します。

java.lang.IllegalArgumentException: @context is not a valid JSON field name.

SerializedName アノテーションに「@」がないと、正常に機能します。有効な JSON ですが、Gson は "@" を処理できないようですか?

4

1 に答える 1

3

問題はGsonのバージョンだと思います。少なくとも 1 年間は動作します。

そのため、 5 月から最新バージョン2.2.4を使用してください。問題なく動作するはずです。

これはあなたができる奇妙なことの例です:

static class A
{
    @SerializedName("@co.nte:xt|")
    public String s;
}

public static void main(String[] args) throws Exception
{       
    Gson gson = new Gson();
    A a = gson.fromJson("{ \"@co.nte:xt|\": \"s\"}", A.class);      
    return;
}
于 2013-06-19T11:25:57.017 に答える