- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用以下代码写入 json 文件:
JSONObject obj = new JSONObject();
JSONArray dlist = new JSONArray();
JSONObject data = new JSONObject();
//Data
data.put("path", gamePath);
data.put("lastprofile", profileList.getSelectedValue());
dlist.add(data);
obj.put("data", dlist);
//Profiles
JSONArray profileList = new JSONArray(); //profiles list
JSONObject profileListObj = new JSONObject(); //profiles
JSONArray profileDataList = new JSONArray(); //profile data list
JSONObject profileData = new JSONObject(); //profile data
//We now have to cycle every profile and create the data, then add it to the list.
for(int i=profiles.size()-1; i>=0; i--) {
Profile p = profiles.get(i);
profileData.put("name", p.name);
profileData.put("mods", p.mods.toString());
System.out.println(p.name + "..." + p.mods.toString());
profileDataList.add(profileData);
System.out.println("list.." + profileDataList.toString());
profileListObj.put("profile"+i, profileDataList);
//obj.put("profile"+i, profileDataList);
//profileList.add(profileListObj);
//profileListObj.clear();
//profileDataList.clear();
//profileData.clear();
}
//profileList.add(profileListObj);
obj.put("profiles", profileDataList);
问题是什么,你可以看到我修改过的一些注释掉的行。整个数组最终将保存为最后一个对象配置文件。
我想要的是:
profiles
-profile1
--data
--data
-profile2
--data
--data etc,
这是使用上面的示例代码生成的结果。
{
"data" : [{
"path" : "tempPath",
"lastprofile" : "Profile1"
}
],
"profiles" : [{
"name" : "Profile1", //This one is correct
"mods" : "[base, mcconfig, mcconfig-startbonus]"
}, {
"name" : "Profile1", //This one should be profile2
"mods" : "[base, mcconfig, mcconfig-startbonus]" //different mods...
}, {
"name" : "Profile1", //this one should be profile3
"mods" : "[base, mcconfig, mcconfig-startbonus]" //different mods...
}, {
"name" : "Profile1",
"mods" : "[base, mcconfig, mcconfig-startbonus]"
}, {
"name" : "Profile1",
"mods" : "[base, mcconfig, mcconfig-startbonus]"
}
]
}
我已经修改了多个注释掉的行,尽可能使所有数据正确,只是没有组织在配置文件中。我试图让它尽可能干净,以便有组织。
我得出的结论是,我无法将具有相同 key 的内容放入 profileData 中。因此,它将第一个输入重新添加到 profileDataList 中,并继续此后的每个循环。
更多信息:每个 profileData 名称和 mods 都有不同的字符串。有 5 种不同的配置文件。配置文件应命名为 profile,并在其后添加相应的编号,Inside ofprofiles。
最佳答案
当您执行 profileData.put("name", p.name);
时,您将覆盖同一个对象,因此最终您将拥有一个包含对同一对象的 3 个引用的数组。要修复它,请在循环内创建一个新实例(请参阅注释):
for(int i=profiles.size()-1; i>=0; i--) {
Profile p = profiles.get(i);
profileData = new JsonObject(); // <- create a new object in each iteration
profileData.put("name", p.name);
profileData.put("mods", p.mods.toString());
System.out.println(p.name + "..." + p.mods.toString());
profileDataList.add(profileData);
System.out.println("list.." + profileDataList.toString());
profileListObj.put("profile"+i, profileDataList); // Is this really needed?
}
//profileList.add(profileListObj);
obj.put("profiles", profileDataList);
关于Java JSON写入jsonarray循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089755/
我正在使用网络服务请求直方图数据。数据是数组中的一组数组: [[1375056000000,23.284713745117],[1375142400000,3.809531211853], [1375
这是我的 json 文件的相关部分: "categories": [ [ "Belgian Restaurant", "belgian" ],
我目前很困惑,为什么我不能在我的 Android 应用程序中从 JSONArray 中提取 JSONArray。下面给出了一个示例和我的源代码片段。 //The JSON { "cur
我正在尝试解析 JSONObject。 这个 JSONObject 中有一个 JSONArray,它在 JSONArray 中还有另一个 JSONArray。 我试图解析的 json 形式如下。 {
我正在尝试解析对象数据列表中的 JSON 数组 payment_details。 在这里,我已经成功解析了回收站 View 中调用的数据数组,但我无法调用 payment_details 数组。 适配
我正在寻找一个选项,可以将多个值添加到 JSONArray 并将其添加到另一个 JSONArray 中,而无需创建多个变量。例如: JSONArray array1 = new JSONArr
我遇到过一种情况,org.json.JSONArray 对象非常大,这最终会导致延迟和其他问题。因此,我们决定将 JSONArray 分割成更小的 block 。例如,如果 JSONArray 是这样
您好,我正在尝试在另一个 json 数组中解析一个 json 数组。帮我解决这个问题。 我的 Json 数组是 "results":[ { "percentcompleted"
我正在使用 Gson用于解析 json 响应。我需要在 JsonArray 中解析 JSONArry.. 我的回答是.. { "message": "Retreive sucessfully", "f
@GET @Produces("application/json") public Response GetAll() throws JSONException{ tblCategoryDao
我从服务器获取以下 json: { "Data": [ { "Record": [ " d11", "d12"
我正在使用 ajax 将 json 对象从 javascript 传递到 java servlet。 var jsonObj = JSON.stringify(objArray); //Then I
我需要获取作为“结果”内部数组的“示例”数据 JSON FILE 并将其附加到字符串。最简单的方法是什么? 这就是我得到“定义”的方式 private JSONObject queryResults;
我需要从 JSONArray 获取 JSONArray: JSONParser parser = new JSONParser(); JSONObject jObject=(J
我有一个 jsonArray 响应。我需要阅读此响应,其中包含 3 个 jsonArray。 这是 json 响应。这是一个 GET 请求并通过 Volley 请求发送。 [ "0x9000",
在此 Json 响应中,如何使用 Java 访问“smallImageUrls”并获取图像 url? 似乎“smallImageUrls”是“匹配”jsonarray 中的一个数组。如果我错了,请有人
这个问题在这里已经有了答案: Convert string to JSON array (10 个答案) 关闭 5 年前。 如何正确地将此字符串转换为 jsonArray? { "myArr
是否可以从较新的 EJB JSON 库转换为较旧的 org.json 库,而无需依赖 org.json.simple 或 GSON? 在下面的例子中,“buttons”是一个填充的 JsonArr
如何从jsonarray获取jsonarray? 我试过的代码。 for(loop) List stringList = new ArrayLis
我目前是 Json 新手,遇到了一个问题。我搜索了很多但找不到答案! 我从 json url 获取名称列表。名称可以在此 json 文件中重复,但我只想将它们的一条记录保留到我称为“arr”的新数组中
我是一名优秀的程序员,十分优秀!