C#和json数据解析
问题描述:
我有一个数据解析的问题,我在Visual Studio中使用C#,我需要解析我的json文件的算法。这是结构:C#和json数据解析
{
"objects": {
"minecraft/sounds/mob/stray/death2.ogg": {
"hash": "d48940aeab2d4068bd157e6810406c882503a813",
"size": 18817
},
"minecraft/sounds/mob/husk/step4.ogg": {
"hash": "70a1c99c314a134027988106a3b61b15389d5f2f",
"size": 9398
},
"minecraft/sounds/entity/rabbit/attack2.ogg": {
"hash": "4b90ff3a9b1486642bc0f15da0045d83a91df82e",
"size
我想拉“minecraft/sounds/mob/stray/death2.ogg”和“散列”数据。
我的C#代码:
HttpWebRequest reqobje = WebRequest.Create(assetsurl) as HttpWebRequest;
using (HttpWebResponse response = reqobje.GetResponse() as HttpWebResponse)
{
StreamReader objejsonsr = new StreamReader(objectjson);
jsonVerisi = objejsonsr.ReadToEnd();
}
parser = JObject.Parse(jsonVerisi);
JToken job = parser["objects"];
答
由于您使用json.net,你可以反序列化的字符串转换成你需要的任何对象。下面的示例是一个匿名类型与字典,以便您可以使用都回来了动态密钥:
var result = JsonConvert.DeserializeAnonymousType(jsonVerisi, new { objects =
new Dictionary<string, Dictionary<string, string>>() });
var objects = result.objects; // key/value;
这是一种方式,你可以用它(甚至映射到自己的模型,而不是匿名类型使其更容易处理):
var objects = result.objects
.Select(m => new
{
Path = m.Key,
Hash = m.Value["hash"],
Size = int.TryParse(m.Value["size"], out var value) ? value : 0,
}).ToList();
var path = objects[0].Path; // Get the path of the first object
+0
刚刚给答案增加了一个例子。如果转移到prod环境,您可以考虑为字典键添加额外的空检查,但希望这可以让您开始! –
+0
非常感谢,我一周之内一直在寻找它。 –
请分享您收到的错误和您如何解析它的示例代码。你在使用Json.net还是其他一些库? –
好的,你有问题。你试过什么代码?有很多使用C#解析JSON的例子。正如所写,您的问题并不表示您的努力。 – Amy
你有什么尝试?我没有看到任何代码 – maccettura