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'}}"