如何使用变量值将列表<对象>序列化为 JSON
How to serialize List<object> to JSON using variable value?
>我需要序列化对象列表,但不使用"默认方式":
假设我在 C# 中有这个类:
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属性名称,第二个变量是其值。
有什么想法吗?我已经看到了这个解决方案:
如何在 C# 中将字典转换为 JSON 字符串?
但我不想将我的对象列表转换为字典,以便我可以使用该 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);
相关文章:
- 序列化数据属性中对象的最可靠方法
- 是否可以在javascript中反序列化java对象
- 对象序列化,JAVA,Javascript
- 如何使用angularjs序列化对象
- 如何在C#中反序列化json对象
- Typescript,序列化类对象
- 是否可以在不序列化的情况下将对象从SilverLight传递到JavaScript
- 添加到序列化数组中的复杂对象在服务器端始终为 null
- 将 JSON 对象转换为序列化字符串以进行服务器端处理
- 如何在 GET 请求中序列化查询的对象
- 为什么JSON对象序列化是需要的或重要的发送ajax调用到服务器
- JSON.stringify没有序列化对象
- 如何在JavaScript中序列化对象
- 是否可以序列化Ace会话对象
- 序列化具有方法的自定义对象.序列化后删除的方法-要采取的步骤
- Javascript 对象序列化函数
- Javascript对象序列化可读
- 使用嵌入对象序列化HTML表单
- 用图像对象序列化和反序列化画布(Fabricjs)
- Java对象序列化和转换为JSON