如何修改JSON结构:将result数组嵌套到data对象中?
解决JSON结构包装问题
其实这个问题很容易搞定,你只需要把已经生成好的result数组,嵌套进目标结构里就行,给你两种实现方式参考:
方式一:先生成result再包装
先保留你原来生成result数组的逻辑,最后把它放到目标结构中:
var parent_uuid = node.parent.data.uuid; var subject_data = node.data.subject_data; result = [] var keys = Object.keys(subject_data); for (var i = 0; i < keys.length; i++) { // 这里保留你原本的push逻辑,比如: result.push({name: keys[i], value: subject_data[keys[i]]}); } // 关键步骤:把result包装进data对象 var finalTarget = { data: { result: result } }; // 如果需要转成标准JSON字符串,执行下面这行 // var jsonStr = JSON.stringify(finalTarget);
方式二:直接构建目标结构
从一开始就初始化好你要的嵌套结构,直接往对应位置push数据:
var parent_uuid = node.parent.data.uuid; var subject_data = node.data.subject_data; // 直接初始化目标结构 var finalTarget = { data: { result: [] } }; var keys = Object.keys(subject_data); for (var i = 0; i < keys.length; i++) { // 直接往finalTarget.data.result里添加元素 finalTarget.data.result.push({name: keys[i], value: subject_data[keys[i]]}); }
两种方式最后得到的finalTarget,都是你想要的{"data": {"result": [{},{},{}]}}结构(如果转成JSON字符串,键名会自动带上双引号,符合标准JSON格式)。
内容的提问来源于stack exchange,提问作者Jakub
相关产品推荐
相关产品推荐

