【问题标题】:Single string in json to deserialze c#json中的单个字符串以反序列化c#
【发布时间】:2016-09-01 06:46:44
【问题描述】:

我在 JSON 中有以下字符串

string IDS = "{\"IDS\":\"23,24,25,28\"}"

现在我需要把它转换成 c# 字符串

我试过了

string id = new JavaScriptSerializer().Deserialize<string>(IDS);

我想在一个字符串中取回这个逗号分隔的字符串,但是它会抛出错误

没有为“System.String”类型定义无参数构造函数

有什么帮助吗?

谢谢

【问题讨论】:

  • “它抛出错误”永远不够详细。也不清楚这些反斜杠实际上是否在字符串中,或​​者这是否是字符串的源代码表示。如果您提供minimal reproducible example,这将非常有帮助。
  • 你想把一个字符串反序列化成一个字符串吗?不,你没有。我猜你期待一个数组。在您共享的第二行代码中尝试“var id”而不是“string id”。
  • 我已经发布了错误
  • @Doruk,我也试过 var id,但同样的错误

标签: c# json deserialization json-deserialization


【解决方案1】:

这是因为您的 json 字符串是字典。试试这样的东西

var result = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(IDS);
var mystring = result["IDS"];

【讨论】:

    【解决方案2】:

    我更喜欢这个使用 JSON.net 的解决方案:

    class Program
    {
        static void Main(string[] args)
        {
            string IDS = "{\"IDS\":\"23,24,25,28\"}";
            var obj = JsonConvert.DeserializeObject<MyClass>(IDS);
            Console.WriteLine(obj.IDS);
            Console.ReadLine();
        }
    }
    
    class MyClass
    {
        public string IDS { get; set; }
    }
    

    【讨论】:

    • 我喜欢与 Newtonsofts JSON.net 合作,建议 +1。
    【解决方案3】:

    发生错误是因为您使用了不正确的类型字符串进行反序列化,它应该是 Matthias Burger 提到的字典。但是你可以使用动态类型,

    string json = "{\"IDS\":\"23,24,25,28\"}";
    var jobject = new JavaScriptSerializer().Deserialize<dynamic>(json );
    string ids = jobject["IDS"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2021-12-27
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多