【问题标题】:Delicate data manipulation within a javascript object of single-value arrays单值数组的 javascript 对象中的精细数据操作
【发布时间】:2018-05-24 20:47:09
【问题描述】:

我有一个独特的问题,我正在尝试使用一些复杂的 JavaScript 代码来解决。供您参考,我使用 MongoDB、NodeJS、ExpressJS 和 VueJS 作为我的技术堆栈。

我正在编写一个应用程序,该应用程序对我的外部合作伙伴进行 api 调用,该合作伙伴返回一个巨大的基于 xml 的数据文件。 (不幸的是,他们无法发送 JSON 数据)。从他们那里收到数据后,我通过 xml2js 库的 parseString 命令运行它。但是它发回代码的方式真的很奇怪。从外面看,它看起来不错,它是一个对象数组:[ {object1},{object2},....{objectN} ]。但是当您查看单个对象时,它会奇怪地格式化数据:


    object1 = {
       key1: [ 'string' ],
       key2: [ '01234657' ],
       key3: [ 'email@email.com' ],
       key4: [{ 
             key5: [ '8372655573' ],
             key6: [ '25.00' ],
             key7: [ 'description of item purchased' ]
             }],
       key8: [ 'otherData' ],
// .......and so on until
       NthKey: [ 'dataType' ]    
    }

我预计我将要接收的大部分数据将由单个键到单个数据值对组成,但有少数例外。但是对于从 parseString 返回的对象的每个键,无论如何,它们都会将值作为字符串分配给数组。当一个键输入了一堆不同的数据类型时(例如上面示例中的 key4 ),我不仅要深入研究一个数组,还要深入研究该数组内的一个嵌套对象,然后与我的数据相关联的各个键..... 我发现这真的很奇怪而且很难处理,因为现在我必须创建一堆循环,这些循环基本上是对象 1 的副本,除了它看起来像这样:


    object1CarbonCopy = {
        key1: String,
        key2: Number,
        key3: email,
        key4: {
            key5: Number,
            key6: Number,
            key7: String 
        },
        key8: String
// and so on until........
        NthKey: 'dataType'
    }

你们中的任何人对可以实现此目的的代码有什么建议吗?或者如果我可以将设置/选项传递给 xml2js 以更改它吐出数据的方式?任何建议都将不胜感激。

【问题讨论】:

  • 你试过其他的 XML-> json 库吗?图书馆为什么会做出这样的选择已经很清楚了。如何知道这是一个只能出现一次并且应该转换为标量的元素,而不是可以多次出现并且应该成为数组的元素,而恰好只有一个存在?所以它正在做通用翻译。但也许另一个图书馆,或者这个有一些提示的图书馆,可以在这种情况下做出其他选择。
  • 嘿,Scott,我没有,但我刚刚在 xml2js 文档中找到了一些我要尝试的东西。

标签: javascript node.js object mean-stack data-manipulation


【解决方案1】:

所以我今天学到了宝贵的一课,有时你需要多次阅读文档,因为你错过了一些东西。原来有一个选项可以关闭自动数组插入垃圾:

parser = new xml2js.Parser( {explicitArray: false} );

如果您正在查看此问题并且不知道问题所在,请将 {explicitArray: false} 作为参数传递给您的 Parser 构造函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多