在json对象中将数据从子节点分配给父节点

时间:2015-05-19 05:31:35

标签: json

我有一个包含项目的对象数组

"0: Object
Entity: "Customer"
Id:   157
Message: "testMessage1"
Property: Object
Name: "LastName"
Rules: "NotEmpty""

在这里,我如何将Name值传递给Property

名称在Property对象中充当键。

我怎样才能丢弃名称并将名称(即姓氏)的值分配给属性

这就是我现在所拥有的:

[
  {
    "Entity":"Customer",
    "Property": {"Name": "Email", "Type": "System.String" },
    "Rules":"NotEmpty",
    "Message":"ssdsdsds",
    "Id":157,
    "ValueToCompare": null,
  }
]

在这里,我需要将Name值(即:Email)分配给Property Directly(就像这样: - "Property": "Email"

2 个答案:

答案 0 :(得分:0)

假设这是你的json

[
{
    "0": {
        "Entity": "Customer",
        "Id": 157,
        "Message": "testMessage1"
    },
    "Property": {
        "Name": "LastName",
        "Rules": "NotEmpty"
    }
}
]

您的原始json包含在

  

originaljson

并转换json包含在

  

transformjson

JSONArray originaljson;
JSONArray transformjson=originaljson;
        for(int i=0;i<originaljson.length();i++)
        {
            JSONObject mainJson=originaljson.getJSONObject(i);
            String name=mainJson.getJSONObject("Property").getString("Name");
            //mainJson.remove("Property");

            JSONObject mainJsonTransform=transformjson.getJSONObject(i);
            mainJsonTransform.remove("Property");
            mainJsonTransform.put("Property",name);
        }

现在你的transformjson包含了所需的json

答案 1 :(得分:0)

谢谢你们对这个问题的兴趣。 最后我写下了正确的解决方案 我自己解决这个问题的方法是......

在javascript中:

function addProp(obj, propName) {
    for (var p in obj) {

        if (obj.hasOwnProperty(p)) {

            if (p == propName) {
                if (obj[p].Name == null) {
                    obj[p] = obj[p];
                }
                else
                {

                    obj[p] = obj[p].Name;
                }

            } else if (typeof obj[p] == 'object') {
                addProp(obj[p], propName);
            }
        }
    }
    return obj;
}

调用此功能:

addProp(数据,&#39;属性&#39;)

现在正常工作