Java 当字段名以点开头时,将Json转换为对象

Java 当字段名以点开头时,将Json转换为对象,java,android,json,eclipse,gson,Java,Android,Json,Eclipse,Gson,我正在尝试使用Gson从JsonElement转换为Object。 问题是JsonObject有两个字段,名称以点开头,当我使用gson.fromJson方法时,这些字段没有映射 这是Json对象(令牌对象): 这是目标类: private class BearerToken{ public String access_token; public String token_type; public String expires_in;

我正在尝试使用Gson从JsonElement转换为Object。 问题是JsonObject有两个字段,名称以点开头,当我使用gson.fromJson方法时,这些字段没有映射

这是Json对象(令牌对象):

这是目标类:

private class BearerToken{
        public String access_token;
        public String token_type;
        public String expires_in;
        public String userName;
        public Date issued;
        public Date expires;

        public BearerToken(){
        }
    }
这是我的代码和结果:

 HttpResponse resp = httpClient.execute(post); // request to server
 String respStr = EntityUtils.toString(resp.getEntity()); // json token
 JsonParser parser = new JsonParser();
 sonElement jsonElement =  parser.parse(respStr);
 BearerToken token = new BearerToken();             
 Gson gson = new Gson();
 token = gson.fromJson(jsonElement, token.getClass());
respStr:

{"access_token":"d7NDuC7accTA[....]",
"token_type":"bearer",
"expires_in":1209599,
"userName":"43344",
".issued":"Tue, 30 Sep 2014 16:03:17 GMT",
".expires":"Tue, 14 Oct 2014 16:03:17 GMT"}
令牌:

{"access_token":"d7NDuC7accTA[....]",
"token_type":"bearer",
"expires_in":1209599,
"userName":"43344",
".issued":"Tue, 30 Sep 2014 16:03:17 GMT",
".expires":"Tue, 14 Oct 2014 16:03:17 GMT"}

字段.expires.issued始终为空

有什么想法吗?
谢谢。

在相应字段上设置相应的
@SerializedName

@SerializedName(".expires")
public Date expires;
您的问题是Gson不知道如何将JSON日期字符串反序列化为
date
对象

您必须添加适当的日期格式

GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");     
Gson gson = builder.create();

基本上,使用
@SerializedName
。这是一个不同的问题。对于我的情况,上述问题的答案不起作用。请重新打开问题以获得新答案。谢谢你试着把
@SerializedName(“.expires”)
放进去,但没有用?问题显然与你提到的不同。答案可能有用或不有用,但问题不是重复的,是不同的,可以为那些有相同问题的人服务,我可以更快地找到答案。我不是Stackoverflow的新用户,在询问之前先进行了检查,不容易找到问题的答案。您的问题和链接的问题,无论标题如何,都是关于如何为字段设置自定义名称。如果你有另外一个问题,请考虑澄清。谢谢。我试过了,但抛出了这个JsonSyntaxException:java.text.ParseException:Unparseable日期:“2014年9月30日星期二17:47:14 GMT”。com.google.gson.JsonSyntaxException:2014年9月30日星期二17:55:30 GMT我不知道什么是正确的DateFormat@Gonzalo您可能需要将不同的默认
语言环境设置设置为一些英语值
Tue
Sep
是英文术语。@Gonzalo您使用的是哪个Gson版本?默认情况下,它似乎使用
Locale.US
。.NET Rest服务返回“2014年9月30日星期二17:47:14 GMT”。我用的是gson-2.2.4。如何为我的Android应用程序设置不同的默认区域设置?@Gonzalo该日期字符串在本地工作。您可能需要检查Android的
SimpleDataFormat
是否有任何差异。您可以使用
Locale.setDefault(..)
更改默认的
Locale