2017-05-21 4 views
0

私は、特定のJSON形式で送信する必要がある複数選択されたオプションの配列を持っています。しかし、Knockoutjsで、私は選択でこれを取得しています:再フォーマットノックアウトJSON

"UserGroups":["Group1","Group2"]" 

しかし、私はそれは、代わりにこの

"UserGroups" : ["UserGroupName" : "Group1", "UserGroupName : "Group2"] 

ようになり必要だ。ここに私のViewModelです:

var viewModel = new UserModel([ 
{ id: ko.observable(""), 
firstName: ko.observable(""), 
lastName: ko.observable(""), 
UserGroupsListOptions: ["Group1", "Group2", "Group3"], 
UserGroups: ko.observable("") }]); 
ko.applyBindings(viewModel); 
+0

UserGroups:[{"UserGroupName": "Group1"}、{"UserGroupName:" Group2 "}はオブジェクトの配列です – Bindrid

+0

どうしたらオブジェクトの配列に変更できますか? – rStackSharper

答えて

0

私はあなたがjavascriptオブジェクト({ })と配列([ ])の違い(と類似点)を調べることから始めることをお勧めします。

コメントとして、あなたの希望するフォーマットは有効なjavascriptではありません。おそらく、オブジェクトの配列を作成することを意味します。

あなたは文字列を取り、オブジェクトを返す関数必要があります、あなたのUserGroupName文字列が配列していますので、あなたがmapを使用することができ、アレイに容易に利用できる方法を

var makeGroup = function(groupName) { 
    return { 
    userGroupName: groupName 
    }; 
} 

をし、

var UserGroupsListOptions = 
    ["Group1", "Group2", "Group3"].map(makeGroup); 

さらに注記:

    新しい配列にコンテンツを変換するために使用することができます
  • javascriptでは、変数(コンストラクタではない)は通常小文字で始まります。これは、どちらがサーバー側のデータであり、どちらが変換されたデータであるかを示すのにも役立ちます。
  • あなたのビューモデルは非常に複雑なオブジェクトの配列で構成されています... ビューモデルを作成して、内部オブジェクトを作成するのに役立ちます。