java - 冒号(:) within JSON data using Gson

标签 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: 上进行查找和替换并转义冒号吗?如果是这样,我将如何转义冒号?

最佳答案

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

这是有效的 JSON:

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

关于java - 冒号(:) within JSON data using Gson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083365/

相关文章:

java - 如何删除(多线程)事务性 Spring/JPA 中的实体

android - 未找到已安装的构建工具。安装 Android 构建工具 30.0 版

android - 为什么 MapFragment(HERE-API) 扩展了 android.app.Fragment 而不是 android.support.v4.app.Fragment?

json - Flutter 使用来自 Golang RFC3339 的 DateTime 解析 json : FormatException: Invalid date format

android - 在 PageViewer (Android) 中为媒体播放器启动缓冲区

java - 我正在使用 xml 配置使用 angularjs 实现 spring security,但出现与 CSRF token 相关的错误

java - Android build.gradle 失败 Android Studio

java - 如何编写静态值返回方法

android - RecyclerView onDoubleClick 和 onClick

java - JSON 对象数组到 Java POJO