以下是我为API请求获取的JSON响应。
user = { '名称':'希瓦&#39 ;, '地址':'我的地址', ' pin码':12345, ' URL':' http://myweb.com/index.php?title=firstname:lastname+middlename&action=edit' }
由于此JSON响应以 user = 开头,因此它既不是JSONObject也不是JSONArray。 所以我认为这是String,我分裂了响应
String[] response = responseBody.split("=");
Gson gson = new GsonBuilder().setLenient().create();
User user = gson.fromJson(response[1], User.class);
这导致MalformedJsonException如下所示
引起:com.google.gson.stream.MalformedJsonException:第5行第47列的未终止字符串路径$ .url
我发现url键的值导致了问题。因为它在url值中有=和:字符。但我找不到合适的解决方案。
任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
因为你一直在使用gson可以做这样的事情
Gson g = new Gson();
Person person = g.fromJson(responsejsonstring, Person.class);
System.out.println(person.name); //Johnh@gmail.com
System.out.println(g.toJson(person)); // {"email":"Johnh@gmail.com"}
答案 1 :(得分:0)
在response[1]
中获得此内容后
{ 'name':'Siva', 'address':'my address', 'pincode':12345, 'url':'http://myweb.com/index.php?title=firstname:lastname+middlename&action=edit' }
首先将'
替换为"
。像这样,
response[1] = response[1].replaceAll("\'", "\"");
在此之后检查回复,以确保所有'
实际上都被"
替换。
然后看看它之后是否解析。