3

ASP.NET Web API を使用して Dictionary を JSON 配列にシリアライズしたいと考えています。現在の出力を説明するために、次のセットアップがあります。

Dictionary<int, TestClass> dict = new Dictionary<int, TestClass>();
dict.Add(3, new TestClass(3, "test3"));
dict.Add(4, new TestClass(4, "test4"));

TestClass は次のように定義されます。

public class TestClass
{
    public int Id { get; set; }
    public string Name { get; set; }

    public TestClass(int id, string name)
    {
        this.Id = id;
        this.Name = name;
    }
}

JSON にシリアル化すると、次の出力が得られます。

{"3":{"id":3,"name":"test3"},"4":{"id":3,"name":"test4"}} 

残念ながら、これはオブジェクトであり、配列ではありません。私がやろうとしていることを何とか達成することは可能ですか?ディクショナリである必要はありませんが、TestClass の ID を配列のキーにする必要があります。

次のリストでは、配列に正しくシリアル化されていますが、正しいキーではありません。

List<TestClass> list= new List<TestClass>();
list.Add(new TestClass(3, "test3"));
list.Add(new TestClass(4, "test4"));

JSON にシリアル化:

[{"id":3,"name":"test3"},{"id":4,"name":"test4"}] 
4

2 に答える 2

3

しかし、TestClass の ID を配列の Key にする必要があります。

JavaScript では、配列と呼ぶものは、インデックスが 0 ベースの整数であるオブジェクトでなければなりません。これはあなたの場合ではありません。JavaScript配列のインデックスとして使用できないID 3と4があります。したがって、ここでは List を使用するのが正しいアプローチです。

任意のインデックスを使用したい場合 (あなたのケースのように、0 ベースではない整数がある場合)、これはもはや配列ではなく、それらの整数または文字列が単にこのオブジェクトのプロパティであるオブジェクトです。それが辞書で達成できることです。

于 2013-10-06T12:24:28.307 に答える