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 注释中没有“@”,它可以正常工作。似乎 Gson 无法处理“@”,即使它是有效的 JSON?

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 回答