如何在Android中处理具有json值的=和:字符的JSON数据

时间:2017-08-13 03:49:59

标签: android json gson retrofit

以下是我为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值中有=和:字符。但我找不到合适的解决方案。

任何人都可以帮我解决这个问题。

2 个答案:

答案 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("\'", "\"");

在此之后检查回复,以确保所有'实际上都被"替换。

然后看看它之后是否解析。