使用数据属性使 Web API 序列化字典,并将键值作为键
本文关键字:键值 字典 数据属性 Web API 序列化 | 更新日期: 2023-09-27 18:34:40
我有一个字典,我正在使用 json.net 序列化程序进行序列化,它目前正在生成
{"phrases":[{"Key":"my-key1","Value":"blah"},{"Key":"my-key2","Value":"blah2"}]}
但是我希望它输出
{"phrases":["my-key1":"blah"},{"my-key2":"blah2"}]}
我的模型看起来像
public class Phrases
{
public Dictionary<string, string> phrases;
}
是否有数据属性可以应用于短语模型以导致这种情况发生?
我找到了以下内容,但不想返回一个字符串 使用 Json.Net 序列化为键值字典?
更新:
我正在扩展 web api 控制器,如下所示,如果我使用 JsonConvert.SerializeObject((,我确实会得到正确的序列化,但是我会有一个字符串要返回。
public class PhraseController : ApiController
{
private IApplicationModel applicationModel;
public Phrases Get(string id)
{
var locale = new CultureInfo(id).LCID;
var phrases = applicationModel.Phrases.Where(x => x.Locale = locale).ToDictionary(x => x.Name, y => y.Value);
return new Phrases() { phrases = phrases };
}
public PhraseController(IApplicationModel applicationModel)
{
this.applicationModel = applicationModel;
}
}
我最终设法让它工作。
问题是它仍在使用DataContractJsonSerializer
。在添加JsonNetFormatter
之前,我添加了一行删除格式化程序,现在它可以正确序列化。
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.JsonFormatter);
GlobalConfiguration.Configuration.Formatters.Add(new JsonNetFormatter(null));
(我正在使用仍然使用DataContractJsonSerializer的beta版本(