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

cap*_*gon 3 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
}
Run Code Online (Sandbox Code Playgroud)

我的爪哇:

resultData=((SoapObject) result).getProperty(0).toString();
User response = gson.fromJson(resultData, User.class);
Run Code Online (Sandbox Code Playgroud)

我知道这些键和值应该用双引号引起来。但事实并非如此,这似乎就是问题所在。

所以我的问题是:

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

或者

我应该查找并替换https:并转义冒号吗?如果是这样,我将如何转义冒号?

JB *_*zet 5

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

这是有效的 JSON:

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

  • 这足以使 JSON 无效。如果您修复了引用错误并重新验证它,它会告诉您所有其他错误,直到您最终获得有效的 JSON。 (2认同)