我试图将数组直接从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}
]}}}";
答案 0 :(得分:1)
这似乎有效:
var jsonArray = jsonObject.data.ToArray();
(乔尔给了我一个提示。但他宣称Array jsonArray
。它没有用。)
答案 1 :(得分:0)
您可以考虑创建一个类来映射序列化内容 我的意思是,你需要一个
的创建类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));
希望此参考可以让您更好地了解序列化和反序列化
希望这有帮助