Abhishek Patil
Abhishek Patil

Reputation: 1445

Gson 'fromJson' issue

I am trying to bind JSON to Java POJO class using com.google.gson.Gson like this :

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

When I am using below mentioned it's working fine

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

However, when below-mentioned data is used, I am getting MalformedJsonException

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

Log :

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

Upvotes: 1

Views: 321

Answers (1)

Jens
Jens

Reputation: 21540

You can not use " within a String to quote your JSON keys and values. You either have to escape them (like you did in your first example) or you have use single quotes '.

You are effectively trying to do String concatenation without using +.

This looks for the compiler like a list of Strings with variables in between:

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

The compiler would expect something like this:

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

If you look at the String this way you immediately see the problem. That's why you should either escape the quotes or use single quotes:

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

Upvotes: 2

Related Questions