无法解析对象的JSON数组

时间:2019-06-10 04:15:20

标签: java node.js json gson

我有一个NodeJS云功能,该功能以数组的形式获取一堆JavaScript对象(来自db的条目),并将其发送给客户端。

在服务器上,我使用以下命令执行此操作: return JSON.stringify(result);

其中“结果”是JS对象的数组。然后,我将数据发送给客户端。

在我的Android客户端中,我收到了String,并且需要遍历原始数组中的每个对象并分别对其进行处理。我不行我总是收到类似这样的错误:

I: [Batch] com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected name at line 1 column 3 path $[0].

在我的Android客户端上,我尝试过:

WebItemEntry [] items = new Gson().fromJson(jsonString, WebItemEntry[].class);

AND ...

ArrayList<WebItemEntry> items = new Gson().fromJson(jsonString, new TypeToken<ArrayList<WebItemEntry>>(){}.getType());

似乎都不起作用。与上述相同。

我从数据库获得的原始输出是JSON字符串,该字符串由五个我要迭代和解析的单独条目组成。它有点混乱,但您可以看到其修饰符是花括号{。我真的很想在我的android客户端中使用GSON或类似的代码分别解析这些条目,并将它们转换为我的自定义Java类:WebItemEntry。

[{\"charityID\":0,\"purchaserZIP\":\"\",\"category\":\"Women\u0027s Accessories\",\"valueCents\":0}, {... same thing for a different entry here...}, {new entry ... }]

1 个答案:

答案 0 :(得分:0)

在服务器上,忽略stringify并返回普通对象,当js对象两次字符串化时出现那些\"字符。因此,将return JSON.stringify(result);替换为return result;