【问题标题】:Javascript convert to arrayJavascript 转换为数组
【发布时间】:2017-11-14 02:09:33
【问题描述】:

我需要创建一个对象数组,每个对象包含“LicenseRefNo”、“FPPRNO”等字段。

网站对当前返回以下 json 的 C# 控制器进行 ajax 调用:

"[{\"LicenseRefNo\":\"17/00031/HMO\",\"FPPRNO\":\"AGE146\"},{\"LicenseRefNo\":\"16/00031/HMO\",\"FPPRNO\":\"AGE146\"}]"

这似乎几乎正确,但我需要将其设置为 KOGrid 的 gridOptions.data 属性。似乎 javascript 代码遇到了问题,因为 KOGrid 需要是一个可观察的数组,而要创建其中之一,我需要一个 javascript 数组。

请问如何将我拥有的字符串转换成数组?

【问题讨论】:

  • 我只知道这个问题会被否决!我意识到这是一个 JS 新手问题,但必须从某个地方开始!
  • Parse JSON in JavaScript?的可能重复

标签: javascript knockout.js kogrid


【解决方案1】:

JSON.parse(string) 应该可以解决问题

【讨论】:

  • 嗯...不确定,因为第二个双引号:"["{\"LicenseRefNo\"。内部对象也在双引号内,这可能比预期的要复杂。如果您尝试JSON.parse,它会抛出:Uncaught SyntaxError: Unexpected token L in JSON at position 4
【解决方案2】:

您发布的 JSON 示例无效,一些引号很奇怪,并且 JSON.parse 不能直接工作。 这是一个有效的 JSON 内容:

"[{\"LicenseRefNo\":\"17/00031/HMO\",\"FPPRNO\":\"AGE146\"},{\"LicenseRefNo\":\"16/00031/HMO\",\"FPPRNO\":\"AGE146\"}]"

你确定你发布的内容就是你得到的吗?它甚至不是一个有效的字符串。

【讨论】:

    【解决方案3】:

    OberservableArray 附带淘汰赛,您可以创建一个

    编辑:我用一个工作示例创建了一个小提琴,因为发布的内容似乎被破坏了

    var viewModel = function() {
        var yourLoadedArray =[{"LicenseRefNo":"17/00031/HMO","FPPRNO":"AGE146"},{"LicenseRefNo":"16/00031/HMO","FPPRNO":"AGE146"}]; 
      	this.obsArr = ko.observableArray(yourLoadedArray);
        this.test = "test";
    };
    
     
    ko.applyBindings(viewModel);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
    <span data-bind="text: test"></span>
    <div  data-bind="foreach: obsArr">
      <span  data-bind="text: LicenseRefNo"></span>
    </div>

    【讨论】:

    • 你试过这个代码吗?由于未转义的第二个引号,它会抛出 Uncaught SyntaxError: missing ) after argument list
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2013-05-26
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2018-12-16
    相关资源
    最近更新 更多