1

我想要一个相当于的 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 对象添加边和节点。怎么做。

4

2 回答 2

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 );
于 2012-12-06T21:48:14.197 回答
0

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

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

于 2012-12-06T20:18:09.763 回答