c# -如何从json动态对象中检索数组

本文关键字:对象 检索 数组 动态 json | 更新日期: 2023-09-27 18:13:18

我试图直接从JSON "data"项获得数组到数组变量:

string jsonString = "{'"data'":[
                       {'"name'":false,'"number'":true},
                       {'"name'":false,'"number'":false},
                       {'"name'":true,'"number'":false}
                     ]}";
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(object));
Array jsonArray = jsonObject.data;
// Here error says:
//Cannot implicitly convert type 'System.Collections.Generic.List<object>' to 'System.Array' 
dynamic lastJsonArrayData = jsonArray[jsonArray.Length - 1];
// this is where the error occurs, it says:
//Cannot apply indexing with [] to an expression of type 'Array'

和我需要做的最后一件事是将lastJsonArrayData转换回动态对象,但我不知道如何…我需要最后两个步骤分别执行,正如它所说的,这意味着首先获得数组,然后获得对象!我是c#的新手

编辑:

真正的JSON结构实际上更像这样:

string jsonString = "{'"firstlevel'":{'"secondlevel'":{'"data'":[
                       {'"name'":false,'"number'":true},
                       {'"name'":false,'"number'":false},
                       {'"name'":true,'"number'":false}
                     ]}}}";

c# -如何从json动态对象中检索数组

这似乎可以工作:

var jsonArray = jsonObject.data.ToArray();
Joel给了我一个提示。但他宣布是Array jsonArray

您可以考虑创建一个类来映射序列化的内容我的意思是,你需要一个创建类

public class Example{
   public string name;
  public string number;
}

在这里你需要把它改成

var serializer = new JavaScriptSerializer();
                serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
                dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));

希望这篇参考能让你更好地理解序列化和反序列化

https://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer (v = vs.110) . aspx

用c#反序列化JSON

希望能有所帮助