【发布时间】:2014-12-29 13:07:50
【问题描述】:
有谁知道如何使用 Json.NET 将对象序列化为以下代码?
class Program
{
static void Main(string[] args)
{
var dic = new Dictionary<string, object>();
dic.Add("key", true);
dic.Add("create", false);
dic.Add("title", "Name");
dic.Add("option2", @"function(value){ return value; }");
dic.Add("fields", new Dictionary<string, object>
{
{"Id", new Dictionary<string, object>
{
{"title", "This is id"}
}
}
});
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(dic, Formatting.Indented));
}
}
结果输出是一个json字符串:
{
"key": true,
"create": false,
"title": "Name",
"option2": "function(value){ return value; }",
"fields": {
"Id": {
"title": "This is id"
}
}
}
但我希望它是以下代码(它看起来像 javascript 哈希):
{
key: true,
create: false,
title: "Name",
option2: function(value){ return value; },
fields: {
Id: {
title: "This is id"
}
}
}
下面的代码将按我的预期显示输出。但我需要一个不同的解决方案。请帮我。谢谢
private static void SerializeObject(IDictionary<string, object> dic)
{
Console.WriteLine("{");
foreach (var key in dic.Keys)
{
var value = dic[key];
if (value is JsFunction) // just a wrapper class of string
{
Console.WriteLine("{0}: {1}", key, value);
}
else if (value is IDictionary<string, object>)
{
Console.WriteLine("{0}:", key);
SerializeObject(value as IDictionary<string, object>);
}
else
{
Console.WriteLine("{0}: {1}", key, JsonConvert.SerializeObject(dic[key]));
}
}
Console.WriteLine("}");
}
【问题讨论】:
-
您期望的符号是无效的 JSON。
-
是的,我用它作为 javascript 变量。所以无效的 JSON 不是问题
-
所以您的问题更多是关于如何生成 javascript 而不是序列化为 json...这个问题对您来说可能很有趣Parsing functions stored as strings in object literal/JSON syntax and differetiating
标签: javascript c# json.net