Tom*_*Tom 6 c# asp.net json.net asp.net-mvc-3 asp.net-web-api
我有一个字典,我正在使用json.net序列化器进行序列化,它目前正在生产
{"phrases":[{"Key":"my-key1","Value":"blah"},{"Key":"my-key2","Value":"blah2"}]}
Run Code Online (Sandbox Code Playgroud)
但我希望它输出
{"phrases":["my-key1":"blah"},{"my-key2":"blah2"}]}
Run Code Online (Sandbox Code Playgroud)
我的模特看起来像
public class Phrases
{
public Dictionary<string, string> phrases;
}
Run Code Online (Sandbox Code Playgroud)
是否有可以应用于短语模型的数据属性导致这种情况发生?
我找到了以下内容,但不希望将字符串Serialize返回到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;
}
}
Run Code Online (Sandbox Code Playgroud)
我最终设法让它发挥作用。
问题是它仍在使用DataContractJsonSerializer. 我在添加之前添加了一行删除格式化程序JsonNetFormatter,现在它可以正确序列化。
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.JsonFormatter);
GlobalConfiguration.Configuration.Formatters.Add(new JsonNetFormatter(null));
Run Code Online (Sandbox Code Playgroud)
(我使用的是测试版,它仍然使用 DataContractJsonSerializer)
| 归档时间: |
|
| 查看次数: |
10835 次 |
| 最近记录: |