我正在尝试使用 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/