Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Json.NET和有效的javascript格式序列化对象_Javascript_C#_Json.net - Fatal编程技术网

使用Json.NET和有效的javascript格式序列化对象

使用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");

有人知道如何使用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));
    }
}
但我希望它是以下代码(看起来像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