使用Json.NET和有效的javascript格式序列化对象
有人知道如何使用Json.NET将对象序列化为以下代码吗使用Json.NET和有效的javascript格式序列化对象,javascript,c#,json.net,Javascript,C#,Json.net,有人知道如何使用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");
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));
}
}
但我希望它是以下代码(看起来像javascript哈希):
下面的代码将显示我期望的输出。但我需要一个不同的解决方案。请帮帮我。多谢各位
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("}");
}
私有静态对象(IDictionary dic)
{
控制台写入线(“{”);
foreach(dic.键中的var键)
{
var值=dic[键];
if(value是JsFunction)//只是字符串的包装类
{
WriteLine(“{0}:{1}”,键,值);
}
else if(值为IDictionary)
{
WriteLine(“{0}:”,key);
序列化对象(值为IDictionary);
}
其他的
{
WriteLine(“{0}:{1}”,key,JsonConvert.SerializeObject(dic[key]);
}
}
控制台写入线(“}”);
}
JSON是一种数据序列化格式。您不应该期望序列化格式来序列化函数
另一方面,JSON属性名被双引号包围。它仍然是有效的JavaScript,因为您可以使用JSON表示法声明对象文字(当然,JSON代表JavaScript对象表示法…!)
如果要使用JSON序列化程序输出包含函数和/或getter/setter的对象文字,则使用的工具不正确。或者您仍然可以使用它并执行进一步的字符串操作/替换,以获得您所期望的结果,就像您已经做过的那样…JSON是一种数据序列化格式。您不应该期望序列化格式来序列化函数 另一方面,JSON属性名被双引号包围。它仍然是有效的JavaScript,因为您可以使用JSON表示法声明对象文字(当然,JSON代表JavaScript对象表示法…!)
如果要使用JSON序列化程序输出包含函数和/或getter/setter的对象文字,则使用的工具不正确。或者您仍然可以使用它并执行进一步的字符串操作/替换,以获得您所期望的结果,就像您已经做过的那样…JSON是一种数据序列化格式。您不应该期望序列化格式来序列化函数 另一方面,JSON属性名被双引号包围。它仍然是有效的JavaScript,因为您可以使用JSON表示法声明对象文字(当然,JSON代表JavaScript对象表示法…!)
如果要使用JSON序列化程序输出包含函数和/或getter/setter的对象文字,则使用的工具不正确。或者您仍然可以使用它并执行进一步的字符串操作/替换,以获得您所期望的结果,就像您已经做过的那样…JSON是一种数据序列化格式。您不应该期望序列化格式来序列化函数 另一方面,JSON属性名被双引号包围。它仍然是有效的JavaScript,因为您可以使用JSON表示法声明对象文字(当然,JSON代表JavaScript对象表示法…!)
如果要使用JSON序列化程序输出包含函数和/或getter/setter的对象文字,则使用的工具不正确。或者您仍然可以使用它并执行进一步的字符串操作/替换,以获得您所期望的效果,就像您已经做过的那样…如果您正在向将运行脚本的网页输出内容,您可以执行以下操作:
var myThing=eval(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(dic,Formatting.Indented));
如果您正在向将运行脚本的网页输出内容,您可以执行以下操作:
var myThing=eval(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(dic,Formatting.Indented));
如果您正在向将运行脚本的网页输出内容,您可以执行以下操作:
var myThing=eval(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(dic,Formatting.Indented));
如果您正在向将运行脚本的网页输出内容,您可以执行以下操作:
var myThing=eval(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(dic,Formatting.Indented));
仅扩展一点:
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model,
new Newtonsoft.Json.JsonSerializerSettings{ ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()}
));
绝对不是这个星球上最漂亮的东西,也可能不是最理想的。。。但它会从ASP.NETMVC模型中吐出遵循公认的JSON命名约定的JSON,而ASP.NETMVC模型遵循它自己的公认命名约定“标准”
...
public int FooBar { get; set; }
public string SomeString { get; set; }
...
将输出:
{"fooBar":1,"someString":"some value"}
只是扩展一点:
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model,
new Newtonsoft.Json.JsonSerializerSettings{ ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()}
));
绝对不是这个星球上最漂亮的东西,也可能不是最理想的。。。但它会从ASP.NETMVC模型中吐出遵循公认的JSON命名约定的JSON,而ASP.NETMVC模型遵循它自己的公认命名约定“标准”
...
public int FooBar { get; set; }
public string SomeString { get; set; }
...
将输出:
{"fooBar":1,"someString":"some value"}
只是扩展一点:
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model,
new Newtonsoft.Json.JsonSerializerSettings{ ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()}
));
绝对不是这个星球上最漂亮的东西,也可能不是最理想的。。。但它会从ASP.NETMVC模型中吐出遵循公认的JSON命名约定的JSON,而ASP.NETMVC模型遵循它自己的公认命名约定“标准”
...
public int FooBar { get; set; }
public string SomeString { get; set; }
...
将输出:
{"fooBar":1,"someString":"some value"}
只是扩展一点:
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model,
new Newtonsoft.Json.JsonSerializerSettings{ ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()}
));
绝对不是这个星球上最漂亮的东西,也可能不是最理想的。。。但它会从ASP.NETMVC模型中吐出遵循公认的JSON命名约定的JSON,而ASP.NETMVC模型遵循它自己的公认命名约定“标准”
...
public int FooBar { get; set; }
public string SomeString { get; set; }
...
将输出:
{"fooBar":1,"someString":"some value"}
这个问题真的太晚了。。。但我有同样的一个,并且发现了。。。下面是我如何使用一个处理特定类的自定义转换器实现的 显然。。。你必须非常小心地使用这个。输出不是JSON,而是JavaScript文本对象。此外,函数声明具有n