【发布时间】:2016-06-26 21:32:28
【问题描述】:
我目前正在尝试创建一个小型启动器,以使用我的世界现有的启动器来解决一些问题。 我正在尝试读取 .json 文件以获取我需要的所有信息。 如果需要看一下.json文件here。
如果我只需要像
这样的单个信息,我就可以正常工作string clienturl = readJson("//downloads/client/url");
用这个:
private string readJson(string element)
{
string json = File.ReadAllText(Path.Combine(appPath + "1.10.2.json"));
var jsonReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(json), new System.Xml.XmlDictionaryReaderQuotas());
var root = XElement.Load(jsonReader);
return root.XPathSelectElement(element).Value;
}
现在的问题是我需要获取所有其他文件的信息。 “元素”将是:
libraries/downloads/artifact/path
libraries/downloads/artifact/url
但显然“路径”和“网址”有不止一个条目,所以我需要一个 foreach 循环。 我需要在上面的代码中进行哪些更改才能使其与 foreach 循环一起使用?
对不起,我的英语不好,我希望它不难理解。
.json 的小预览,以防您不想下载文件:
"libraries": [
{
"name": "com.mojang:netty:1.6",
"downloads": {
"artifact": {
"size": 7877,
"sha1": "4b75825a06139752bd800d9e29c5fd55b8b1b1e4",
"path": "com/mojang/netty/1.6/netty-1.6.jar",
"url": "https://libraries.minecraft.net/com/mojang/netty/1.6/netty-1.6.jar"
}
}
},
{
"name": "oshi-project:oshi-core:1.1",
"downloads": {
"artifact": {
"size": 30973,
"sha1": "9ddf7b048a8d701be231c0f4f95fd986198fd2d8",
"path": "oshi-project/oshi-core/1.1/oshi-core-1.1.jar",
"url": "https://libraries.minecraft.net/oshi-project/oshi-core/1.1/oshi-core-1.1.jar"
}
}
},
{
"name": "net.java.dev.jna:jna:3.4.0",
"downloads": {
"artifact": {
"size": 1008730,
"sha1": "803ff252fedbd395baffd43b37341dc4a150a554",
"path": "net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar",
"url": "https://libraries.minecraft.net/net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar"
}
}
}
]
【问题讨论】:
-
为什么不想使用 json 库?您将在 2 分钟内完成使用它们
-
@SirRufo 在 .net 中处理 .json 文件的方法有很多种,我上面使用的只有一种。我只是没有真正看到“需要”使用第三方库来获得我想要的东西。我敢肯定还有很多方法可以在没有第三方库的情况下循环 .json,我目前只是不知道如何。
-
当然有很多方法,你可以用儿童铲子盖房子。我建议使用正确的工具来完成工作。使用 Json.NET,您将在 2 分钟内完成。只是我的 2 美分