Как часть моей компьютерной науки IA Я создаю инструмент, который читает историю совпадения и детали игр dota и генерирует статистику и статистику героя. Для этого я получил доступ к API-интерфейсу клапана и схватил несколько jsons совпадений и сопоставил историю с ним, затем немного сократил их, чтобы они содержали только информацию, которая мне нужна в json.Преобразование json в java-объект с gson
Ниже приведен пример из деталей одного из матчей в формате JSON:
"result": {
"players": [
{
"account_id": 40884464,
"player_slot": 0,
"hero_id": 31,
"kills": 8,
"deaths": 8,
"assists": 14,
"last_hits": 72,
"denies": 0,
"gold_per_min": 304,
"xp_per_min": 412,
"level": 18,
},
{
"account_id": 70638797,
"player_slot": 1,
"hero_id": 35,
"kills": 6,
"deaths": 7,
"assists": 4,
"last_hits": 212,
"denies": 37,
"gold_per_min": 371,
"xp_per_min": 356,
"level": 17,
},
{
"account_id": 76281087,
"player_slot": 2,
"hero_id": 5,
"kills": 3,
"deaths": 13,
"assists": 10,
"last_hits": 22,
"denies": 0,
"gold_per_min": 215,
"xp_per_min": 259,
"level": 14,
},
{
"account_id": 4294967295,
"player_slot": 3,
"hero_id": 28,
"kills": 11,
"deaths": 11,
"assists": 11,
"last_hits": 166,
"denies": 18,
"gold_per_min": 413,
"xp_per_min": 485,
"level": 20,
},
{
"account_id": 81692493,
"player_slot": 4,
"hero_id": 2,
"kills": 1,
"deaths": 9,
"assists": 7,
"last_hits": 135,
"denies": 8,
"gold_per_min": 261,
"xp_per_min": 314,
"level": 16,
},
{
"account_id": 10101141,
"player_slot": 128,
"hero_id": 30,
"kills": 7,
"deaths": 8,
"assists": 25,
"last_hits": 90,
"denies": 2,
"gold_per_min": 382,
"xp_per_min": 421,
"level": 18,
},
{
"account_id": 62101519,
"player_slot": 129,
"hero_id": 7,
"kills": 6,
"deaths": 8,
"assists": 20,
"last_hits": 305,
"denies": 0,
"gold_per_min": 556,
"xp_per_min": 585,
"level": 22,
},
{
"account_id": 134700328,
"player_slot": 130,
"hero_id": 4,
"kills": 17,
"deaths": 2,
"assists": 13,
"last_hits": 335,
"denies": 16,
"gold_per_min": 729,
"xp_per_min": 724,
"level": 25,
},
{
"account_id": 35357393,
"player_slot": 131,
"hero_id": 83,
"kills": 4,
"deaths": 4,
"assists": 23,
"last_hits": 16,
"denies": 4,
"gold_per_min": 318,
"xp_per_min": 407,
"level": 18,
},
{
"account_id": 4294967295,
"player_slot": 132,
"hero_id": 101,
"kills": 13,
"deaths": 8,
"assists": 12,
"last_hits": 57,
"denies": 3,
"gold_per_min": 390,
"xp_per_min": 405,
"level": 18,
}
]
,
"radiant_win": false,
"duration": 2682,
"start_time": 1461781997,
"match_id": 2324299045,
"match_seq_num": 2036251155,
"cluster": 133,
"game_mode": 1,
"flags": 0,
"engine": 1,
"radiant_score": 30,
"dire_score": 48
}
Используя плагин IntelliJ я создал 3 Java-классы, один с результатом матча, один для деталей результат, и один для детализацию игроков в результате, каждый с переменными получает наборы в:
TestMatch полей:
private TestMatchResult result;
TestMatchResult полей :
private int duration;
private int start_time;
private int cluster;
private boolean radiant_win;
private int match_seq_num;
private int engine;
private TestMatchResultPlayers[] players;
private long match_id;
private int dire_score;
private int flags;
private int game_mode;
private int radiant_score;
TestMatchResultPlayers поля:
private int kills;
private int gold_per_min;
private int last_hits;
private int account_id;
private int assists;
private int level;
private int player_slot;
private int xp_per_min;
private int hero_id;
private int denies;
private int deaths;
Я скачал и добавил библиотеку gson как зависимость в проект IntelliJ. Я пытаюсь разобрать json в классы java как объект и хотел бы сделать это для всех jsons-совпадений, однако я не совсем уверен, как это сделать на данный момент, все, что у меня есть:
public static void getMatch()
{
Gson gson = new Gson();
}
Может ли кто-то, кто понимает gson лучше меня, дал мне немного указания относительно того, как я буду разбирать этот json в классе (-ах) как объект для нескольких jsons-совпадений? Как только я это сделал, остальное, что мне нужно сделать, легко, так как это всего лишь случай принятия переменных и выполнения вычислений на них, а затем их отображения. Если это невозможно или практично, я могу сделать тестовый CSV и читать из этого вместо этого, поскольку я знаю, как их использовать, но только натолкнуться на jsons, поскольку это то, что API API API возвращает запросы, так что я могу также узнать, как используй их.
Спасибо!
посмотреть здесь http://stackoverflow.com/questions/22685948/android-json-parsing-arrays-with-gson Или здесь http://stackoverflow.com/a/22754230/5202007 за дополнительной помощью – Tauqir
https://github.com/google/gson/blob/master/UserGuide.md лучший источник информации. Вы также можете использовать http://www.jsonschema2pojo.org/ (или идею, как вы уже сделали), чтобы создать классы pojo и parse json string с помощью 'TestMatch myobj = new Gson(). FromJson (jsonString, TestMatch.class); ' – varren