C# 无法从反序列化的Json字符串获取数据

C# 无法从反序列化的Json字符串获取数据,c#,json,api,serialization,arraylist,C#,Json,Api,Serialization,Arraylist,我真的很困惑,为什么我不能访问从Json字符串反序列化的任何数据。当我逐步完成这个过程时,我可以看到数据就在那里,我就是无法访问它 我把数据放入字典,它的计数是2。它包含对象{object[]},我将其读取为对象的ArrayList?,以及具有响应信息的对象 我对访问ArrayList中的对象所需的响应信息不太在意。我没有这样的运气,我的代码如下: var output=new JavaScriptSerializer.Deserializeawait response.Content.Read

我真的很困惑,为什么我不能访问从Json字符串反序列化的任何数据。当我逐步完成这个过程时,我可以看到数据就在那里,我就是无法访问它

我把数据放入字典,它的计数是2。它包含对象{object[]},我将其读取为对象的ArrayList?,以及具有响应信息的对象

我对访问ArrayList中的对象所需的响应信息不太在意。我没有这样的运气,我的代码如下:

var output=new JavaScriptSerializer.Deserializeawait response.Content.ReadAsStringAsync

我尝试使用output[List]List获取ArrayList,它是objects键,仍然可以看到里面的所有对象,但仍然无法访问它们。这可能是一个简单的解决办法,一直都是,但我整天都在盯着这个问题,只是无法理解它,所以可以用另一双眼睛

谢谢

编辑

Json字符串的格式如下:


{List:[{Id:1,intProperty:2,boolProperty:false},{Id:2,intProperty:3,boolProperty:false},{Id:4,intProperty:5,boolProperty:false}],响应信息:{Other info here}

将其反序列化为类:

public class ListClass
{
    public int Id;
    public int IntProperty;
    public bool boolProperty;
}
然后

var output = new JavaScriptSerializer().Deserialize<Dictionary<string, ListClass>>(await response.Content.ReadAsStringAsync());

这应该行得通

我已经想出了一个冗长的方法来获取我需要的信息,如果有人能找到一种方法来浓缩代码,我愿意接受建议: 首先,我创建了我的货币类

public class Currency
{
    public int CurrencyId { get; set; }
    public int GlobalCurrencyId { get; set; }
    public bool Archived { get; set; }
}
接下来,我像在问题中一样反序列化了Json

var output=new JavaScriptSerializer.Deserializeawait response.Content.ReadAsStringAsync

其次是长篇大论;我使用foreach语句获取输出变量的每个元素。然后很清楚,里面的数据是一个字典对象数组,所以我创建了一个货币类对象列表:

var currencyObject = output["List"];

List<Currency> currencyList = new List<Currency>();
Currency item;

ArrayList myList = currencyObject as ArrayList;
foreach (object element in myList)
{
    Dictionary<string, object> L1 = element as Dictionary<string, object>;

    item = new Currency();
    item.CurrencyId = Convert.ToInt32(L1["CurrencyId"]);
    item.GlobalCurrencyId = Convert.ToInt32(L1["GlobalCurrencyId"]);
    item.Archived = Convert.ToBoolean(L1["Archived"]);

    currencyList.Add(item);
}

只用两行就搞定了

var json=response.Content.ReadAsStringAsync.Result


IList output=new JsonSerializer.Deserializenew JsonTextReadernew StringReaderjson

你能显示你正在使用的JSON字符串吗?现在已经完成了,在我发布后意识到。。我已经把数据拿出来了,但这并不重要。我猜你有没有试过反序列化到字典中呢?我试过字典,但不是那样。。。我将尝试…InnerException{没有为'System.Object[]'类型定义无参数构造函数。}System.Exception{System.MissingMethodException}否:太糟糕了…但无论如何,至少这对我有帮助。哈哈!谢谢你的提问!这对我来说也是一次学习经历。