java - Gson 'fromJson' 问题

标签 java json gson

我正在尝试使用 com.google.gson.Gson 将 JSON 绑定(bind)到 Java POJO 类 像这样:

MyClass data = gson.fromJson(jsonString, MyClass.class);

当我使用下面提到的它工作正常

{
    "data": "{\"key1\":{\"key11\":\"192.192.1.192\",\"key12\":\"WEB\"}}"
}

但是,当使用下面提到的数据时,我收到 MalformedJsonException

{
    "data": "{"key1":{"key11":"192.168.1.158","key12":"WEB"}}"
}

日志:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: 
Unterminated object at line 1 column 354 path 

最佳答案

您不能在 String 中使用 " 来引用您的 JSON 键和值。您要么必须转义它们(就像在第一个示例中所做的那样),要么您使用单引号 '.

您实际上是在尝试在不使用 + 的情况下进行字符串连接。

这看起来像一个字符串列表,其中包含变量的编译器:

"{"key1":{"key11":"192.168.1.158","key12":"WEB"}}"

编译器会期望这样的结果:

"{" + key1 + ":{" + key11 + ":" + 192.168.1.158 + "," + key12 + ":" + WEB + "}}";

如果您以这种方式查看字符串,您会立即发现问题。这就是为什么您应该转义引号或使用单引号:

"{\"key1\":{\"key11\":\"192.168.1.158\",\"key12\":\"WEB\"}}"
"{'key1':{'key11':'192.168.1.158','key12':'WEB'}}"

关于java - Gson 'fromJson' 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50987016/

相关文章:

mysql - 如何使用Spring boot和MYSQL为多级菜单列表创建嵌套JSON?

java - 使用自定义 TypeSelector 使用 Gson on Fire 反序列化 Json

java - 在java中重新格式化JSON数组/对象

java - 如何访问类范围外但在父类范围内的变量?

python - 使用 Python 创建复杂的 JSON,并根据条件创建一些嵌套数组

java - 日期在java中显示为快毫秒并且格式不正确

c# - Fiddler - ReadResponse 失败 : The server did not return a response for this request

java - Gson将字段反序列化为具有不同名称的变量,尽管具有带有字段名称的变量

java - 写出文件下载的百分比?

java - 从数据库中搜索并显示输出