如何使用变量值将 List<object> 序列化为 JSON?
How to serialize List<object> to JSON using variable value?
我需要序列化对象列表,但不使用 "default way":
假设我在 C# 中有这个 class:
public class Test
{
public string Key;
public string Value;
}
List<Test> tests;
如果我序列化这个列表 (return Json(tests.ToArray())
) 我得到这个
{"Key": "vKey1", "Value": "value1"}, {"Key": "vKey2", "Value": "value2"}
我想要这样的结果:
{"vKey1": "value1"}, {"vKey2": "value2"}
编辑:
这是期望的输出:
{"vKey1": "value1", "vKey2": "value2"}
我希望第一个变量的内容是 JS 属性 名称,第二个是它的值。
有什么想法吗?我见过这个解决方案:
How do I convert a dictionary to a JSON String in C#?
但我不想将我的对象列表转换成字典,所以我可以使用 string.format 解决方案再次转换它。
谢谢!
如果您使用的是 JSON.Net(我假设您是因为您使用的是 MVC 5),您可以将列表转换为
List<Dictionary<string, string>>
每个列表条目都应该是一个新词典,该词典中有一个条目。 JSON.Net 将用您的字典键值替换 属性 名称,为您提供所需的结构。
public ActionResult Test()
{
tests = new List<Test>
{
new Test {Key = "vKey1", Value = "value1"},
new Test {Key = "vKey2", Value = "value2"}
};
var tests2 = new List<Dictionary<string, string>>();
tests.ForEach(x => tests2.Add(new Dictionary<string, string>
{
{ x.Key, x.Value }
}));
return Json(tests2, JsonRequestBehavior.AllowGet);
}
产生以下 JSON:
[{"vKey1":"value1"},{"vKey2":"value2"}]
编辑:
反映所需的解决方案:
tests.ForEach(x => tests2.Add(x.Name, x.Value));
这是一种更通用的方法,不需要列表(只需一个 IEnumerable)。
var tests = new List<Test>
{
new Test {Key = "vKey1", Value = "value1"},
new Test {Key = "vKey2", Value = "value2"}
};
var dict = tests.ToDictionary(t => t.Key, t => t.Value);
return Json(dict);
我需要序列化对象列表,但不使用 "default way":
假设我在 C# 中有这个 class:
public class Test
{
public string Key;
public string Value;
}
List<Test> tests;
如果我序列化这个列表 (return Json(tests.ToArray())
) 我得到这个
{"Key": "vKey1", "Value": "value1"}, {"Key": "vKey2", "Value": "value2"}
我想要这样的结果:
{"vKey1": "value1"}, {"vKey2": "value2"}
编辑:
这是期望的输出:
{"vKey1": "value1", "vKey2": "value2"}
我希望第一个变量的内容是 JS 属性 名称,第二个是它的值。
有什么想法吗?我见过这个解决方案:
How do I convert a dictionary to a JSON String in C#?
但我不想将我的对象列表转换成字典,所以我可以使用 string.format 解决方案再次转换它。
谢谢!
如果您使用的是 JSON.Net(我假设您是因为您使用的是 MVC 5),您可以将列表转换为
List<Dictionary<string, string>>
每个列表条目都应该是一个新词典,该词典中有一个条目。 JSON.Net 将用您的字典键值替换 属性 名称,为您提供所需的结构。
public ActionResult Test()
{
tests = new List<Test>
{
new Test {Key = "vKey1", Value = "value1"},
new Test {Key = "vKey2", Value = "value2"}
};
var tests2 = new List<Dictionary<string, string>>();
tests.ForEach(x => tests2.Add(new Dictionary<string, string>
{
{ x.Key, x.Value }
}));
return Json(tests2, JsonRequestBehavior.AllowGet);
}
产生以下 JSON:
[{"vKey1":"value1"},{"vKey2":"value2"}]
编辑:
反映所需的解决方案:
tests.ForEach(x => tests2.Add(x.Name, x.Value));
这是一种更通用的方法,不需要列表(只需一个 IEnumerable)。
var tests = new List<Test>
{
new Test {Key = "vKey1", Value = "value1"},
new Test {Key = "vKey2", Value = "value2"}
};
var dict = tests.ToDictionary(t => t.Key, t => t.Value);
return Json(dict);