Java Gson&x27;fromJson';问题

Java Gson&x27;fromJson';问题,java,json,gson,Java,Json,Gson,我正在尝试使用com.google.gson.gson 像这样: MyClass data = gson.fromJson(jsonString, MyClass.class); 当我使用下面提到的它的工作良好 { "data": "{\"key1\":{\"key11\":\"192.192.1.192\",\"key12\":\"WEB\"}}" } 然而,当使用下面提到的数据时,我得到的是MalformedJsonException { "data": "{"key1"

我正在尝试使用
com.google.gson.gson
像这样:

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"}}"
}
日志:

您不能在
字符串中使用
来引用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'}}"
"{\"key1\":{\"key11\":\"192.168.1.158\",\"key12\":\"WEB\"}}"
"{'key1':{'key11':'192.168.1.158','key12':'WEB'}}"