文字列のリストを連想配列に変換する必要があるのはなぜですか? AngularJs は、配列の反復処理を処理できます。
これを示すplnkrは次のとおりです。http://plnkr.co/edit/TcXxSBkt7NBkqNJhkSE1
基本的に、サーバーはオブジェクトを返し、プロパティ SomeListItems は配列です。
ng-repeat
それらを反復するために使用します
<ul>
<li ng-repeat="item in data.SomeListItems">{{item}}</li>
</ul>
クライアントまたはサーバーのデータ構造をマッサージすることで、この問題に対する解決策がいくつか見られます。
これは、サーバーから受信した文字列配列を連想配列に変換してクライアントで編集できるようにし、サーバーにポストするために 1 次元配列に再変換する方法を示すplnkrです。
逆に、サーバー上でこれを行うことができます。SomeListItems を動的なリストとして宣言すると、ServiceStack シリアライザーが処理できる匿名オブジェクトを含め、必要なものを何でも割り当てることができます (これはテストしていませんが、うまくいくと思います)。
[Route("/path/{Id}", "GET, OPTIONS")]
public class MyModel
{
public int Id { get; set; }
public List<dynamic> SomeListItems { get; set; }
}
// in a controller or service
var model = new MyModel() { Id = 1 };
model.SomeListItems = new List<dynamic> {
new { Key = 1, Value = "foo }, new {Key = 2, Value = "bar" }
}; // this should serialize to JSON as { Id: 1, SomeListItems: [ {Key: 1, Value: 'foo'}, {Key:2, Value = 'bar'}]}; which angular can handle nicely
または、より冗長でないカスタム クラスを指定することもできます。KeyValuePair<string, string>
public class JsonPayload
{ // yes, it's just a KVP, but it's much more concise
public string Key {get;set;}
public string Value {get;set;}
}
次に、モデルを再定義します
[Route("/path/{Id}", "GET, OPTIONS")]
public class MyModel
{
public int Id { get; set; }
public List<JsonPayload> SomeListItems { get; set; }
}
これはダイナミクスを使用するよりも少し冗長ですが、JSON シリアライゼーションは間違いなくこれを処理できるはずです。