C# 无法从反序列化的Json字符串获取数据
我真的很困惑,为什么我不能访问从Json字符串反序列化的任何数据。当我逐步完成这个过程时,我可以看到数据就在那里,我就是无法访问它 我把数据放入字典,它的计数是2。它包含对象{object[]},我将其读取为对象的ArrayList?,以及具有响应信息的对象 我对访问ArrayList中的对象所需的响应信息不太在意。我没有这样的运气,我的代码如下: var output=new JavaScriptSerializer.Deserializeawait response.Content.ReadAsStringAsync 我尝试使用output[List]List获取ArrayList,它是objects键,仍然可以看到里面的所有对象,但仍然无法访问它们。这可能是一个简单的解决办法,一直都是,但我整天都在盯着这个问题,只是无法理解它,所以可以用另一双眼睛 谢谢 编辑 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
{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}否:太糟糕了…但无论如何,至少这对我有帮助。哈哈!谢谢你的提问!这对我来说也是一次学习经历。