C# 序列化字典<;int,object>;使用JSON.net?
我正在尝试使用JSON.net序列化字典 使用C# 序列化字典<;int,object>;使用JSON.net?,c#,javascript,json,json.net,C#,Javascript,Json,Json.net,我正在尝试使用JSON.net序列化字典 使用 JsonConvert.SerializeObject(theDict); 这是我的结果 { "1": { "Blah1": false, "Blah2": false, "Blah3": "None", "Blah4": false }, "2": { "Blah1": false, "Blah2": false, "Blah3": "None", "Blah4": f
JsonConvert.SerializeObject(theDict);
这是我的结果
{
"1": {
"Blah1": false,
"Blah2": false,
"Blah3": "None",
"Blah4": false
},
"2": {
"Blah1": false,
"Blah2": false,
"Blah3": "None",
"Blah4": false
},
"3": {
"Blah1": false,
"Blah2": false,
"Blah3": "None",
"Blah4": false
},
...
...
...
}
有没有一种方法可以序列化此字典,以便将键呈现为有效的javascript变量
我也愿意接受其他序列化字典的策略。这是为
字典生成JSON的正确方法。原因是,
JS在这方面稍微宽松一些:但JSON是JS对象文本的一种受限形式。在任何情况下,JavaScript中的所有属性名称都是字符串。(它们根据需要进行隐式转换。)因此,({1:2})[“1”])
和({1:2})[1])
在JS中同样有效(两者的计算结果都是2
),但只有{1:2}
是有效的JSON
如果要反序列化回的目标类型是Dictionary
,则它将自动处理int
,IIRC键中的转换
我不知道如何让JSON.NET直接生成非JSON;-)可以通过循环顶级构造来完成,例如,每个KeyValuePair
,并为每个条目生成JSON以及“修改的”JS代码:
其中,Emit
是用于收集输出的内容。。。不过,如果可能的话,我建议使用“普通JSON”
快乐编码。它们是有效的。您希望输出是什么样子的?从技术上讲,您的变量[“1”]是有效的。生成的JSON的使用者是什么?如果是javascript,那么只需使用JSON.parse
将JSON反序列化回JS对象。啊,我明白了。这些是指数而不是变量吗?那么对象[1]和对象1呢?我的解释正确吗?object[“1”]
不是object[1]
。我可以从上面的评论和一些研究中猜出同样多的东西,但得到一个非常具体的解释总是很好的。谢谢
foreach (var p in dict) {
var k = p.Key;
var v = p.Value;
Emit(string.Format(
"var name{0} = {1};",
k, JsonConvert.SerializeObject(v)));
}