【问题标题】:how to convert array with keys/values to JSON c#如何将带有键/值的数组转换为 JSON c#
【发布时间】:2012-05-10 08:54:16
【问题描述】:

我对 C# 完全陌生,我已经让自己头疼了。我知道这对你来说可能是孩子们的东西,但我花了一个多小时在谷歌上搜索,似乎无法解决。

我要做的就是将数组转换为 JSON。我很了解 PHP,所以这是我正在尝试做的一个例子(在 PHP 中):

$myarr=array("key1"=>"value for key 1","key2"=>"value for key 2");

$jsonArray=json_encode($myarr);

所以$jsonArray 将是:{"key1":"value for key 1","key2":"value for key 2"}

现在,我正试图这样做,但在 C# 中。

这是我目前所拥有的:

 String[] keys = new String[] { "emailSend","toEmail"};
 String[] values = new String[] {textBox2.Text,textBox1.Text};
 JavaScriptSerializer js = new JavaScriptSerializer();
 string json = js.Serialize(keys);//final json result
 MessageBox.Show(json);//show me

我正在使用 Visual Studio C# 2010,它抛出了这个错误(使用上面的代码):

找不到类型或命名空间名称“JavaScriptSerializer” (您是否缺少 using 指令或程序集引用?)

关于我在这里做错了什么有什么想法吗?谢谢

【问题讨论】:

    标签: c# .net arrays json


    【解决方案1】:

    您似乎没有正确的using 语句?将以下内容添加到文件顶部:

    using System.Web.Script.Serialization;

    编辑:要获得正确格式的 JSON,请改用 Dictionary

    var keyValues = new Dictionary<string, string>
                   {
                       { "emailSend", textBox1.Text },
                       { "toEmail", textBox2.Text }
                   };
    
    JavaScriptSerializer js = new JavaScriptSerializer();
    string json = js.Serialize(keyValues);
    MessageBox.Show(json);
    

    【讨论】:

    • 这是在 System.Web.Extensions.dll 中,以防您没有将其作为参考加载(即,默认情况下,winforms 或 wpf 项目不会拥有它)。你可以选择使用fastJSON 之类的东西。序列化对象比使用 JavaScriptSerializer 更容易和更快。
    • 我现在收到错误:The type or namespace name 'Script' does not exist in the namespace 'System.Web' (are you missing an assembly reference?) 感谢 xD
    • @nav_nav 嗯,奇怪。您使用的是 .NET 3.5 之前的版本吗?
    • 别以为我是。我将如何检查?
    • 检查我的编辑我已经为您提供了您需要的代码,您需要使用字典来获取该格式。
    【解决方案2】:

    使用 JSON.NET 和 JObject 类怎么样?

    var obj = new JObject();
    
    obj["One"] = "Value One";
    obj["Two"] = "Value Two";
    obj["Three"] = "Value Three";
    
    var serialized = JsonConvert.SerializeObject(obj);
    

    给你

    {"One":"Value One","Two":"Value Two","Three":"Value Three"}
    

    【讨论】:

    • 这样,我得到:The type or namespace name 'JObject' could not be found (are you missing a using directive or an assembly reference?)The name 'JsonConvert' does not exist in the current context
    • 如果JObject not found,需要添加'using Newtonsoft.Json.Linq;'图书馆。
    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 2020-11-20
    • 2014-05-26
    • 1970-01-01
    • 2020-01-06
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多