【问题标题】:JSON formatting - How to remove named arrayJSON 格式 - 如何删除命名数组
【发布时间】:2013-12-12 07:07:30
【问题描述】:

我希望我已经为这个问题设置了一个合适的“标题”。让我分享一个混搭的屏幕截图,向您展示我的意思:

由于 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

等等

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

谢谢!

【问题讨论】:

标签: xml json


【解决方案1】:

我没有看到屏幕截图,所以我主要是在猜测您要做什么以及您的数据是什么样的,但是您能否通过 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;
}

【讨论】:

  • 谢谢乔尔。抱歉,但我发现我无法添加屏幕截图,因为我是“新手”。我试图通过提供几个纯文本示例来模仿我的屏幕截图。我正在使用 ColdFusion,但 Javascript 应该没问题,因为我可以将它合并到我的页面中。你上面说的有道理......现在实际上让它工作只是我的小事:o) 请原谅我,但你上面示例中的“树”将是我转换后的 JSON 结构,对吧?再次感谢。
  • 是的。我根本没有严格测试过,但它适用于我扔给它的几个简单的 JSON 结构。当然,如果你碰巧有任何你不想折叠的名为“元素”的东西,它会破坏事情。
猜你喜欢
  • 1970-01-01
  • 2020-03-02
  • 2021-11-10
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 2023-03-13
相关资源
最近更新 更多