gpt4 book ai didi

javascript - 将 C# 列表(多个)转换为 JavaScript 关联数组

转载 作者:行者123 更新时间:2023-12-03 08:45:20 25 4
gpt4 key购买 nike

我正在追求这样的东西:

我在 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}
]

正是名称和值周围的那些额外的“”破坏了键:值关联。有任何想法吗?

谢谢!

最佳答案

您可以使用Json.NET serializer来实现您所需要的。查看下一个代码并根据您的需要进行更改:

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}
]

关于javascript - 将 C# 列表(多个)转换为 JavaScript 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32916700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com