我有一个JSON对象,其中包含带有密钥的JSONArray。这是我的声明方式:
01
我正在尝试将“ MYKEY”的名称替换为“ MYNEWKEY”,并且我尝试使用
<div ng-if="field.type=='day'" class="form-group">
<label for="contact_type">{{field.label}}</label>
<input ng-class="{ 'error': field.error }"
ui-date-mask="DD"
type="text"
name="{{field.name}}"
placeholder="{{field.placeholder}}"
ng-model="field.data"
value="{{field.data}}"
ng-disabled="!formData.editable"
class="form-control"
ng-blur="valChange(field)" />
<span class="error-msg" ng-show="field.error">{{field.errorMessage}}</span>
</div>
但是这只会创建另一个JSONArray,其内容为“ MYKEY”到“ MYNEWKEY”。
我要实现的是具有相同的JSONArray内容,并带有新密钥“ MYNEWKEY”。
有人知道我做错了什么吗?
我正在使用这些库:
JSONArray myArray = new JSONArray();
JSONObject myObj = new JSONObject();
myObj.put("MYKEY", myList);
答案 0 :(得分:1)
您必须使用remove("OLD_KEY")
删除值,然后将其添加到新键下
答案 1 :(得分:0)
已经answered by Konstantin Pribluda,您可以通过调用remove
来删除旧密钥。由于返回的值已删除,因此您可以直接使用它。
这是一个MCVE (最小,完整和可验证的示例),已使用org.json:json:20140107
测试过:
import org.json.JSONObject;
String json = "{" +
" \"Foo\": \"Bar\"," +
" \"MYKEY\": [ 1, 2, 3, 4 ]" +
"}";
JSONObject myObj = new JSONObject(json);
System.out.println(myObj);
myObj.put("MYNEWKEY", myObj.remove("MYKEY"));
System.out.println(myObj);
输出
{"MYKEY":[1,2,3,4],"Foo":"Bar"}
{"Foo":"Bar","MYNEWKEY":[1,2,3,4]}
如您所见,MYKEY
属性已重命名为MYNEWKEY
。