根据Java中的键在JSONObject中删除JSON数组

时间:2018-10-23 16:32:41

标签: java arrays json

我有一个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);

2 个答案:

答案 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