簡體   English   中英

將C#列表(多個)轉換為JavaScript關聯數組

[英]converting C# Lists (more than one) to JavaScript Associative Arrays

我在追求這樣的事情:

我在C#中有多個列表,如下所示:

List<string> Names = new List<string>()
{
    "Name1",
    "Name2",
    "Name3"
};

List<double> Values = new List<double>()
{
    1,
    2,
    3
};

我想將它們序列化為javascript中的數組(我實際上正在尋找返回一個字符串)以獲取如下內容:

[
{ name: "Name1", value: 1 },
{ name: "Name2", value: 2 },
{ name: "Name3", value: 3 }
]

到目前為止,我已經嘗試過了:

public class bmData
{
    string _name;
    public string name
    { 
        get { return this._name; } 
        set { this._name = value; }
    }
    double _value;
    public double value
    {
        get { return this._value; }
        set { this._value = value; }
    }
}

將它們壓縮在一起並包裝成“數據項”類。 由於其他原因,我想保留此功能。 然后,將鍵值對壓縮到這個新類中:

List<bmData> namesValues = Names.Zip(Values, (x, y) => new bmData{name = x, value = y}).ToList();

最后,我嘗試像這樣序列化它:

var serializer = new JavaScriptSerializer();
string jsData = serializer.Serialize(namesValues);

但這返回的是這樣的:

[
{"name":"Name1","value":1},
{"name":"Name2","value":2},
{"name":"Name3","value":3}
]

正是那些圍繞名稱和值的多余“”殺死了key:value關聯。 有任何想法嗎?

謝謝!

您可以使用Json.NET序列化程序實現所需的功能。 簽出下一個代碼,並根據需要進行更改:

List<bmData> namesValues = new List<bmData>
{
    new bmData { name = "Name1", value= 1 },
    new bmData { name = "Name2", value= 2 },
    new bmData { name = "Name3", value= 3 }
};

string jsData = "[]";
var serializer = new JsonSerializer();
using (var stringWriter = new StringWriter())
{
    using (var writer = new JsonTextWriter(stringWriter))
    {
        writer.QuoteName = false;
        serializer.Serialize(writer, namesValues);
    }

    jsData = stringWriter.ToString();
}

但是,我必須指出,這將產生無效的JSON,但這正是您所需要的。

結果:

[
{name:"Name1",value:1.0},
{name:"Name2",value:2.0},
{name:"Name3",value:3.0}
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM