Minecraft统计数据Json Java或Python
我正在努力弄清楚如何阅读统计数据。json位于中。minecraft/saves/<;worldname>/统计数据/<;UUID>;。json
Python版本
import json
json_file = open("C:/Users/<name>/AppData/Roaming/.minecraft/saves/<worldname>/stats/<UUID>.json")
variables = json.load(json_file)
json_file.close()
print(variables["stats"])
Java版本:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try (Reader reader = new FileReader("C:/Users/<name>/AppData/Roaming/.minecraft/saves/<worldname>/stats/<UUID>.json")) {
JSONObject jsonObject = (JSONObject) parser.parse(reader);
System.out.println(jsonObject);
String stats = (String) jsonObject.get("stats");
System.out.println(stats);
//long age = (Long) jsonObject.get("age");
//System.out.println(age);
// loop array
//JSONArray msg = (JSONArray) jsonObject.get("messages");
//Iterator<String> iterator = msg.iterator();
//while (iterator.hasNext()) {
// System.out.println(iterator.next());
//}
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
以下是大致情况。json文件在文件中看起来像:
{'stats': {'minecraft:mined': {'minecraft:lily_of_the_valley': 1, 'minecraft:birch_leaves': 2, 'minecraft:crafting_table': 2, 'minecraft:grass': 1, 'minecraft:grass_block': 4, 'minecraft:oak_log': 10, 'minecraft:dirt': 6, 'minecraft:stone': 6, 'minecraft:oak_leaves': 3}, 'minecraft:killed': {'minecraft:pig': 4}, 'minecraft:picked_up': {'minecraft:stick': 2, 'minecraft:crafting_table': 3, 'minecraft:wooden_pickaxe': 1, 'minecraft:porkchop': 16, 'minecraft:oak_log': 10, 'minecraft:lily_of_the_valley': 1, 'minecraft:dirt': 19, 'minecraft:stone_axe': 1, 'minecraft:stone_pickaxe': 1, 'minecraft:oak_sapling': 2, 'minecraft:birch_sapling': 1, 'minecraft:oak_planks': 16, 'minecraft:cobblestone': 6}, 'minecraft:custom': {'minecraft:time_since_rest': 2832, 'minecraft:sprint_one_cm': 26594, 'minecraft:damage_taken': 360, 'minecraft:walk_one_cm': 10606, 'minecraft:mob_kills': 4, 'minecraft:drop': 1, 'minecraft:damage_dealt': 390, 'minecraft:swim_one_cm': 6359, 'minecraft:interact_with_crafting_table': 2, 'minecraft:fly_one_cm': 37248, 'minecraft:crouch_one_cm': 459, 'minecraft:play_one_minute': 6532, 'minecraft:deaths': 1, 'minecraft:sneak_time': 460, 'minecraft:walk_under_water_one_cm': 38, 'minecraft:jump': 293, 'minecraft:leave_game': 1, 'minecraft:walk_on_water_one_cm': 521, 'minecraft:time_since_death': 2811, 'minecraft:fall_one_cm': 9542}, 'minecraft:dropped': {'minecraft:birch_sapling': 1}, 'minecraft:crafted': {'minecraft:wooden_sword': 1, 'minecraft:oak_planks': 40, 'minecraft:crafting_table': 1, 'minecraft:stick': 8, 'minecraft:wooden_pickaxe': 1, 'minecraft:stone_pickaxe': 1, 'minecraft:stone_axe': 1}, 'minecraft:used': {'minecraft:oak_planks': 27, 'minecraft:wooden_pickaxe': 6, 'minecraft:stone_axe': 7, 'minecraft:wooden_sword': 13, 'minecraft:lily_of_the_valley': 1, 'minecraft:crafting_table': 2, 'minecraft:porkchop': 4}}, 'DataVersion': 2586}
因此,我想知道如何在Java或Python中访问每个部分中的每个变量,这将指导我如何制作统计读取器。我正在为我的软件、设计和开发课程制作一个统计读取器程序,我不知道如何进一步进入这个领域。json文件,而不仅仅是“stats”元素中的内容。一般来说,我希望程序能够将每个变量分类到它们的子标题(“minecraft:mined”)中,然后能够通过稍后的搜索获得该子标题中的变量,但我将在稍后进行讨论,我只需要弄清楚如何读取和使用该子标题。json文件。感谢大家给我的任何帮助,即使这是一个为我自己研究如何做到这一点的正确方向的提示,因为我不知道从哪里开始
无论如何,谢谢你们的帮助
# 1 楼答案
尽管它已经解决了,但我认为在Java中看到它也会很好。看看这个例子Java-Json
为了简单起见,我将数据更改为
{'stats': {'minecraft:mined': {'minecraft:lily_of_the_valley': 1}}}
方法是这样的:
# 2 楼答案
json.load()
将json转换为python命令和列表,因此您可以像处理常规python数据结构一样处理这些数据。(如果您需要对这些信息进行更新,请考虑查找{{CD2}}和^ {< CD3}})基本上,在你的例子中,你可以做的是:
从那以后,你应该可以继续自己的生活。:)