如何在C#MVC Controller操作中将动态对象序列化为JSON?
我想将动态对象序列化为JSON。 我尝试使用ExpandoObject,但结果不是我需要的:
public JsonResult Edit() { dynamic o = new ExpandoObject(); ((IDictionary)o)["abc"] = "ABC"; //or o.abc = "ABC"; return Json(o); }
我希望JSON看起来像:{“abc”:“ABC”}但它看起来像[{“Key”:“abc”,“Value”:“ABC”}]显然ExpandoObject不会这样做,但我可以inheritance从DynamicObject以某种方式覆盖其方法来实现我想要的JSON格式?
我有同样的问题,最后通过使用JSON.net(Newtonsoft.Json)序列化程序而不是使用JsonContent结果来修复它。 然后它使用普通属性与“key”“value”怪异列表序列化我的动态对象。
//In my usage I had a list of dynamic objects var output = new List(); //Change this return JsonContent(new {Error = errorMessage, Results = output}); //to this return Content(JsonConvert.SerializeObject(new {Error = errorMessage, Results = output}));
这可能对您没用,但我有类似的要求,但使用了SerializableDynamicObject
我将字典的名称更改为“Fields”,然后使用Json.Net序列化以生成json,如下所示:
{"Fields":{"Property1":"Value1", "Property2":"Value2" etc.
其中Property1和Property2是动态添加的属性 – 即字典键
如果我可以摆脱封装其余部分的额外“Fields”属性,那将是完美的,但我已经解决了这个限制。
这将返回你想要的。
public JsonResult Edit() { return Json(new {abc = "ABC"}); }
您始终可以序列化HashTable,它不是动态的,但它支持对象键值对。
这对我很有用。 你必须使用Json.NET。
上述就是C#学习教程:如何在C#MVC Controller操作中将动态对象序列化为JSON?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
[HttpGet] public string GetJson() { List> list = new List>(); List properties = new List (); for (int i = 0; i < 10; i++) { properties.Add(new DataEntry { Column = "column" + i.ToString(), Value = "value" + i.ToString() }); } list.Add(properties.ToDictionary(x => x.Column, y => y.Value)); string test = JsonConvert.SerializeObject(list); return test; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1013999.html