使用Gson在JSON数据中使用冒号(:)

时间:2012-12-29 15:57:19

标签: java android json gson

我正在调用一个返回JSON的Web服务。在该JSON中,我有一个包含URL的属性。但该URL中的冒号(:)使Gson抛出gson.stream.MalformedJsonException错误。我知道这些键和值应该被包装

Web服务返回的JSON:

{
   ID=15; 
   Code=ZPFgNr; 
   UserName=https://www.google.com/accounts/o8/id?id=xxxxxx; //<--problem
   FirstName=Joe
}

我的Java:

resultData=((SoapObject) result).getProperty(0).toString();
User response = gson.fromJson(resultData, User.class);

我知道这些键和值应该用双引号括起来。但它们不是,这似乎是问题所在。

所以我的问题是:

我应该在以某种方式反序列化之前对此JSON进行编码吗?如果是这样,怎么样?

我应该在https:上找到并替换并取消冒号,如果是这样,我将如何逃脱冒号?

1 个答案:

答案 0 :(得分:4)

JSON使用逗号分隔属性,使用冒号将属性名称与属性值分开,并使用双引号括起名称和值。这不是有效的JSON。

这是有效的JSON:

{
   "ID" : "15", 
   "Code" : "ZPFgNr",
   "UserName" : "https://www.google.com/accounts/o8/id?id=xxxxxx",
   "FirstName" : "Joe"
}