我想在JSonArray中将对象添加到特定位置。 我的当前JsonArray看起来像这样
{
"imgs": [
"String1",
"String2",
"String3",
"String4"
]
}
我需要在第一个位置插入jsonarray中的一个项目,如下所示 -
jsonArray.put(1,"String5")
这是在第一个位置替换项目 但我需要以下结果
{
"imgs": [
"String1",
"String5",
"String2",
"String3",
"String4"
]
}
请建议
答案 0 :(得分:10)
看起来太旧但你可以这样做:
public void addToPos(int pos, JSONObject jsonObj, JSONArray jsonArr){
for (int i = jsonArr.length(); i > pos; i--){
jsonArr.put(i, jsonArr.get(i-1));
}
jsonArr.put(pos, jsonObj);
}
答案 1 :(得分:3)
试试这个:
String myString = jsonArray.getString(1);
jsonArray.put(1,"String5");
jsonArray.put(myString);
答案 2 :(得分:2)
Android JSONArray
不是通用数据结构,而是(de)将数据序列化到JSON和从JSON序列化数据。因此,您应该对java.util.List
或其他内容执行所有添加/删除/变异操作,并且只有当您希望通过线路将其发送转换为JSONArray
时才会执行。
Java EE 7还有一个JsonArray
类,在他们的API描述中,他们非常明确地表示他们希望阻止人们将其用作java.util.list
的替换JsonArray instances are list objects that provide read-only access to the values in the JSON array. Any attempt to modify the list, whether directly or using its collection views, results in an UnsupportedOperationException.
< / p>
答案 3 :(得分:1)
像这样调用这个函数
String changed_json_string = changeJson(jsonString,2,&#34; hai&#34;)
public String changeJson(String json,int index,String add_string){
try {
JSONObject job=new JSONObject(json);
JSONArray jsonArray=job.getJSONArray("imgs");
ArrayList<String> arrayList=new ArrayList<>();
for (int i=0;i<jsonArray.length();i++){
String abc= (String) jsonArray.get(i);
arrayList.add(abc);
}
arrayList.add(index,add_string);
JSONObject a=new JSONObject();
JSONArray jar=new JSONArray();
for (String str:
arrayList) {
jar.put(str);
}
a.put("imgs",jar);
return a.toString();
} catch (JSONException e) {
e.printStackTrace();
}
return "";
}
输出
{"imgs":["String1","String2","hai","String3","String4"]}
答案 4 :(得分:1)
使用数组移位逻辑或使用新插入的元素创建新json数组的副本并插入到原始json ojbect中。
答案 5 :(得分:0)
使用JsonArrayBuilder
对象。
private JsonArray insertAt(int index, String value, JsonArray origArray) {
JsonArrayBuilder resultBuilder = Json.createBuilderFactory(null).createArrayBuilder();
// Insert elements before the position
for (JsonValue elemValue : origArray.subList(0, index)) {
resultBuilder.add(elemValue);
}
// Insert your element
resultBuilder.add(value);
// Insert the rest of elements.
for (JsonValue elemValue : origArray.subList(index, origArray.size())) {
resultBuilder.add(elemValue);
}
return resultBuilder.build();
}
请注意,此处未进行参数检查。另外,除了将字符串作为值插入之外,还可以使用JsonValue使其更通用。