Jef*_*ell 5 javascript c# json json.net
我正在尝试使用JSON.net来序列化字典.
运用
JsonConvert.SerializeObject(theDict);
Run Code Online (Sandbox Code Playgroud)
这是我的结果
{
"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
},
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法序列化这个字典,以便将键呈现为有效的javascript变量?
我也对序列化字典的其他策略持开放态度.
小智 15
这是生成JSON的正确方法Dictionary<int,...>.原因是JSON 要求所有键都是带引号的字符串文字.
JS在这方面稍微宽松一些:但JSON是JS对象文字的限制形式.在任何情况下,JavaScript中的所有属性名称都是字符串.(根据需要它们隐式转换.)因此,({1: 2})["1"])和({"1": 2})[1])如在JS同样有效(两者计算结果2),但只有{"1": 2}有效JSON.
如果要反序列化的目标类型是,Dictionary<int,...>那么它将自动处理intIIRC中密钥的转换.
我不知道如何让JSON.NET直接生成非JSON ;-)可以通过循环顶层构造来完成,例如每个KeyValuePair<int,...>并为每个单独的条目生成JSON以及"修改的"JS码:
foreach (var p in dict) {
var k = p.Key;
var v = p.Value;
Emit(string.Format(
"var name{0} = {1};",
k, JsonConvert.SerializeObject(v)));
}
Run Code Online (Sandbox Code Playgroud)
哪里Emit是什么是用来收集输出......我会建议"只是正常的JSON"如果可能的话,虽然.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
7447 次 |
| 最近记录: |