gpt4 book ai didi

c# - JSON 到数组 C#

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:05 25 4
gpt4 key购买 nike

尝试仅使用 Newtonsoft.Json 将 json 文件中的所有信息放入数组中。

    namespace tslife
{
partial class game
{

world[] game_intro = _read_world<world>("intro");

//** other code **//

public void update()
{
//crashes: System.NullReferenceException: Object reference not set to an instance of an object
Console.WriteLine(game_intro[0].data.Text);
}

private static T[] _read_world<T>(string level)
{
var json_data = string.Empty;
string st = "";
try
{
var stream = File.OpenText("Application/story/"+level+".json");
//Read the file
st = stream.ReadToEnd();
}
catch(SystemException e){}
json_data = st;

//Console.WriteLine(json_data);
// if string with JSON data is not empty, deserialize it to class and return its instance
T[] dataObject = JsonConvert.DeserializeObject<T[]>(json_data);
return dataObject;
}
}
}


public class worldData {
public string Text { get; set; }
public string Icon { get; set; }
public int sectionID { get; set; }
}

public class world
{
public worldData data;
}

我不知道它是否是 json 的格式,但在其他地方搜索后我被卡住了。

[{
"world":
{
"Text":"Hi",
"Icon":"image01.png",
"sectionID": 0
}
},
{
"world":
{
"Text":"Hey",
"Icon":"image02.png",
"sectionID": 1
}
}
]

最佳答案

在没有注释的序列化和反序列化中,成员名称需要匹配您的 JSON 结构。

类 world 和 worldData 还可以,但世界类缺少属性 world

如果我将你的类结构更改为:

public class worldData {
public string Text { get; set; }
public string Icon { get; set; }
public int sectionID { get; set; }
}

// notice I had to change your classname
// because membernames cannot be the same as their typename
public class worldroot
{
public worldData world { get; set; }
}

我可以在一个数组中反序列化你的 json,它给我两个元素:

var l = JsonConvert.DeserializeObject<worldroot[]>(json);

关于捕获异常:只有在您要对它们做一些明智的事情时才捕获异常。

        try
{
var stream = File.OpenText("Application/story/"+level+".json");
//Read the file
st = stream.ReadToEnd();
}
catch(SystemException e){}

像这样的空捕获是没有用的,只会妨碍调试。你可以忍受 unchecked exceptions .

关于c# - JSON 到数组 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26689620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com