2017-06-12 91 views
-1

我需要創建對象的數組,與包含字段「LicenseRefNo」,「FPPRNO」等的Javascript轉換爲陣列

網站使得一個AJAX調用目前返回以下JSON一個C#控制器的每個對象:

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

這似乎是幾乎正確的,但我需要設置爲KOGrid的gridOptions.data財產。看起來javascript代碼會遇到問題,因爲KOGrid需要是可觀察數組,並且要創建其中的一個,我需要一個javascript數組。

如何將字符串轉換爲數組?

+0

我剛剛知道這個問題會得到投票!我意識到這是一個JS新手問題,但要開始某處! –

+0

[Parse JSON in JavaScript?](https://stackoverflow.com/questions/4935632/parse-json-in-javascript) – JJJ

回答

5

JSON.parse(string)應該做的伎倆

+0

嗯......不知道是因爲第二個雙引號:''[[ 「{\」LicenseRefNo \「'。內部對象也在雙引號內,這可能比預期更復雜。如果你嘗試'JSON.parse',它會拋出:'未捕獲的SyntaxError:在JSON位置4出現意外的令牌L' –

+0

我正在做一個小提琴,謝謝你的反饋 – Epitouille

+0

JSON.parse是我需要的魔法 –

1

OberservableArray附帶擊倒,你可以創建一個與

編輯:我創建了一個工作示例小提琴自發布似乎被打破

var viewModel = function() { 
 
    var yourLoadedArray =[{"LicenseRefNo":"17/00031/HMO","FPPRNO":"AGE146"},{"LicenseRefNo":"16/00031/HMO","FPPRNO":"AGE146"}]; 
 
    \t 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>

+0

你試試這個代碼?它會拋出'Uncaught SyntaxError:missing)在參數列表後因爲未轉義的第二個引號。 –

+0

更新了我的答案與工作小提琴,對不起 – subkonstrukt

2

您發佈的JSON示例無效,一些引號很奇怪,JSON.parse不能直接工作。 這裏是一個有效的JSON內容:

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

你確定你張貼的內容是你得到了什麼?它甚至不是有效的字符串。

+0

好的謝謝,我已經糾正 –