【问题标题】:Deserialize Json string to Dictionary<int,List<T>>将 Json 字符串反序列化为 Dictionary<int,List<T>>
【发布时间】:2017-03-09 14:38:12
【问题描述】:

如何在 C# 中反序列化后续 json 字符串(没有动态类型)的最佳方式?

var jss = new JavaScriptSerializer();
var table = jss.Deserialize<Dictionary<int,List<T>>>(json);

[[{
   "value": "1.19",
   "datevalue": "2016-03-19 19:33:13",  
   "winflag": "1",
   "idmercado": "1"
   },
   {
   "value": "1.22",
   "datevalue": "2016-03-19 19:33:13",
   "winflag": "1",
   "idmercado": "1"
   }],
   [{
     "value": "1.04",
     "datevalue": "2016-03-19 19:33:13",
     "winflag": "1",
     "idmercado": "2"
   }]]

【问题讨论】:

  • 我认为它是有效的 JSON,但不清楚您要在哪里获取字典。您也应该考虑使用 DataContractSerializer 或 Json.NET,我认为您会得到更好的支持那里
  • 您应该查找 Json.NET (NewtonSoft JSON)。它提供了更干净的序列化/反序列化,甚至在 JavaScriptSerializer 上的 MSDN 文章也推荐使用它。
  • 感谢您的回答。 [0[{ },{ }][1[{ },{ }] 也许这是转换为字典的更好方法?
  • 你的 JSON 是一个数组数组...所以首先反序列化它,然后使用索引作为键调用数组上的字典
  • 非常感谢约翰尼,它解决了!

标签: c# json dictionary serialization


【解决方案1】:

就像 Johnny 所说,我的 json 字符串是一个数组数组。所以,我使用了一种特殊的粘贴来构建类的结构。 此解决方案在此帖子上: How to deserialize a JSON array with nested arrays of objects

public class Rootclass
{
    public List<Class1> rootClass { get; set; }
}

public class Class1
{
    public string value { get; set; }
    public string datevalue { get; set; }
    public string winflag { get; set; }
    public string idmercado { get; set; }
}

List<List<Class1>> myDeserializedObjList =
        JsonConvert.DeserializeObject<List<List<Class1>>>(json);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2020-05-06
    相关资源
    最近更新 更多