如何动态添加到Java中的JSON对象中的嵌套元素?

时间:2012-12-06 20:08:33

标签: java javascript json

我想要一个等同于

的json对象
var data = {"nodes":"var postLoadData = {\n nodes:{408868239:{'tipo':'clase','shape':'dot','label':'clase2'},843594076:{'tipo':'clase','shape':'dot','label':'ESTADIA'}},edges:{\n 2:{408868239:{},843594076:{}}}};\n \n sys.graft(postLoadData);"}

我这样做了

JSONObject jsonObject = new JSONObject();
jsonObject.put("nodes", "var postLoadData = {\n nodes:{408868239:{'tipo':'clase','shape':'dot','label':'clase2'},843594076:{'tipo':'clase','shape':'dot','label':'ESTADIA'}}," +
                "edges:{\n 2:{408868239:{},843594076:{}}}};\n \n sys.graft(postLoadData);");

我需要动态地将边和节点添加到此json对象。怎么做。

2 个答案:

答案 0 :(得分:0)

您是否阅读了JSONObject的API,它定义了您需要的操作。从我所看到的,您将需要操纵键nodes的值。

我很想知道如果你的JSON中有JS,你的JS会是什么样子。你打算打电话给exec吗?你如何实施我会非常小心。 JSON用于交换数据,你要做的就是交换JS,这不是它的目的,也不安全。

答案 1 :(得分:0)

你没有JSON,你在该字符串中拥有的是这个javascript代码:

var postLoadData = {
    nodes: {
        408868239: {
            'tipo': 'clase',
            'shape': 'dot',
            'label': 'clase2'
        },
        843594076: {
            'tipo': 'clase',
            'shape': 'dot',
            'label': 'ESTADIA'
        }
    },
    edges: {
        2: {
            408868239: {},
            843594076: {}
        }
    }
};
sys.graft(postLoadData);

最接近的有效JSON可能是:

{
    "nodes": {
        "408868239": {
            "tipo": "clase",
            "shape": "dot",
            "label": "clase2"
        },
        "843594076": {
            "tipo": "clase",
            "shape": "dot",
            "label": "ESTADIA"
        }
    },
    "edges": {
        "2": {
            "408868239": {},
            "843594076": {}
        }
    }
}

你可以使用上面的JSON(不是javascript代码)然后执行此操作:

JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( theJsonString );