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}
]}}}";
这似乎可以工作:
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
希望能有所帮助