Java 未正确生成Json数组
我已经编写了java代码,用于从文件中生成搜索数据的json,但它并没有生成精确的JsonArray。就像Java 未正确生成Json数组,java,json,Java,Json,我已经编写了java代码,用于从文件中生成搜索数据的json,但它并没有生成精确的JsonArray。就像 [{“项目”:“1617”},{“项目”:“1617”}] 而不是 [{“项目”:“747”},{“项目”:“1617”}]。 这里1617是从文件中提取的最后一项 JSONArray ja = new JSONArray(); JSONObject jo = new JSONObject(); while (products.readRecord()) { String pro
[{“项目”:“1617”},{“项目”:“1617”}]
而不是
[{“项目”:“747”},{“项目”:“1617”}]。
这里1617是从文件中提取的最后一项
JSONArray ja = new JSONArray();
JSONObject jo = new JSONObject();
while (products.readRecord())
{
String productID = products.get("user");
int j = Integer.parseInt(productID);
if(j == userId) {
itemid = products.get("item");
jo.put("item",itemid);
ja.add(jo);
}
}
out.println(ja);
products.close();
必须在循环中重新实例化JSonObject,因为修改它时,会修改数组多次引用的基础对象。移动
JSONObject jo=newjsonobject()代码>在循环中,它应该可以正常工作。您实际上是在创建一个jSONobject对象来处理两个对象,您不需要在while循环中创建jSONobject吗?类似这样,while循环中的每个迭代都将创建一个新的JSONObject并将其添加到JSONArray中
JSONArray ja = new JSONArray();
while (products.readRecord())
{
String productID = products.get("user");
int j = Integer.parseInt(productID, 10);
if(j == userId)
{
JSONObject jo = new JSONObject();
itemid = products.get("item");
jo.put("item", itemid);
ja.add(jo);
}
}
out.println(ja);
products.close();
额外:
我不确定java如何将字符串转换为整数,但我认为在使用parseInt时应该始终指定基数,这样像“09”这样的字符串就不会被视为八进制值并转换为错误的值(至少在javascript中是这样的:)
Integer.parseInt(productID,10)
PlaceJSONObject jo=newjsonobject()代码>循环内部:
while (products.readRecord())
{
JSONObject jo = new JSONObject();
String productID = products.get("user");
int j = Integer.parseInt(productID);
// etc
}+1。更好的是,将实例化移动到if块,避免实例化不必要的对象