JSON格式 - 如何删除命名数组

时间:2013-12-11 22:38:49

标签: xml json

我希望我为这个问题设定了一个合适的“标题”。让我分享一下蒙面的截图,告诉你我的意思:

由于XML数据的转换,我在左侧(A)有JSON格式的输出。我发现我需要专门包含“元素”符号才能正确创建文件的结构(必须与我动态循环和创建XML的方式有关)。但是,我需要的实际JSON格式输出结构在右侧(B)。不知何故,我需要删除“元素”符号......我猜它有点“崩溃”。 (同样,我试图避免重写创建XML的代码,而是能够将我的XML转换为我需要的JSON。)

行。因此我似乎不允许发布图片,所以我会尝试在文本中模拟一些内容。

这是我得到的:

JSON
 productCategoriesList
  element
  {}
   id=1
   name=product type A
   products
    element
     {}
      id=A1
      name=product A1
     {}
      id=A2
      name=product A2
  {}
   id=2
   name=product type B
   products
    element
     {}
      id=B1
      name=product B1

这就是我需要的:

JSON
 productCategoriesList
  {}
   id=1
   name=product type A
   products
     {}
      id=A1
      name=product A1
     {}
      id=A2
      name=product A2
  {}
   id=2
   name=product type B
   products
     {}
      id=B1
      name=product B1

(我可能不需要告诉你我是一个黑客。因此,我感谢你的帮助和你的谦逊,因为你接受我的hacky-ness。)

谢谢!

1 个答案:

答案 0 :(得分:0)

我没有看到截图,所以我主要猜测你要做什么以及你的数据是什么样的,但是你可以通过JSON结构来寻找包含“元素”键的任何节点,用“元素”的内容替换节点?

由于您还没有说明您使用的语言,我将使用JavaScript。

function collapse_elements(tree) {
    // Helper function to do the recursion
    function _collapse(node, parent, key) {
        // we only need to modify this node if it can have children
        if (typeof node === 'object') {
            if (typeof node['element'] !== 'undefined' && parent) {
                // If this node contains an 'element' property,
                // replace this node with the value of 'element'.
                node = node['element'];
                parent[key] = node;
            }

            // Recursively apply this to all child nodes
            for (var k in node) {
                if (node.hasOwnProperty(k)) {
                    _collapse(node[key], node, k);
                }
            }
        }
    }

    _collapse(tree, null, null);
    return tree;
}