为了账号安全,请及时绑定邮箱和手机立即绑定

Json.net 序列化为没有属性名称的特定 json 格式

Json.net 序列化为没有属性名称的特定 json 格式

C#
胡说叔叔 2022-10-23 15:41:41
我正在尝试为 tinymce 拼写检查器编写自定义实现。我需要从我的 ashx 页面返回格式的 JSON 对象{  "words": {     "misspelled1": ["suggestion1", "suggestion2"],     "misspelled2": ["suggestion1", "suggestion2"]  }}其中 mispelled1 和 2 是拼写错误的单词及其各自的建议, words 是 id 所以一个实际的例子是{words:{"wod":["wood","wooden"],"tak":["take","taken"]}}我试过这个public class incorrectWords{    public string word { get; set; }    public string[] suggestions { get; set; }}string json = Newtonsoft.Json.JsonConvert.SerializeObject(new        {            words= new List<incorrectWords>()                    {                        new words {word="wod",suggestions = new string[]{ "wood","wooden" } },                        new words  {word="tak",suggestions= new string[]{ "talk","take" } }        }        });context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(json,Newtonsoft.Json.Formatting.Indented));    }但是,这添加了属性名称单词和建议,我最终得到以下不是我需要的。"{\"words\":[{\"word\":\"wod\",\"suggestions\":[\"wood\",\"wooden\"]},{\"word\":\"tak\",\"suggestions\":[\"talk\",\"take\"]}]}"在此先感谢您的任何指点。有些帖子似乎表明我需要一个自定义转换器,我想知道设计不正确的Words类是否是一件简单的事情
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

如果您想在 JSON 中有键值对,您应该将您的列表映射到字典。

这是您的代码的修改版本,它可以工作:


var words = new List<incorrectWords>() {

            new incorrectWords() {word="wod",suggestions = new string[]{ "wood","wooden" } },

            new incorrectWords() {word="tak",suggestions= new string[]{ "talk","take" } }

};


var dic = new Dictionary<string, string[]>();

words.ForEach(word =>

{

    dic.Add(word.word, word.suggestions);

});


string json = Newtonsoft.Json.JsonConvert.SerializeObject(new {

    words = dic

});


context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(json, Newtonsoft.Json.Formatting.Indented));



查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号