#java
#java
Вопрос:
‘NextTo’ указывает, какие регионы. Застрял при синтаксическом анализе.
Комментарии:
1. Просто небольшая подсказка для последнего раздела вашего кода. Вам не нужно проверять, является ли это true или false, просто верните значение сравнения, оно будет выглядеть следующим образом:
return (nextTo[region1] == region2);
Этот оператор return возвращает либо true, либо false.
Ответ №1:
Да, ваш псевдокод — правильный путь. Начните с десериализации вашей строки JSON с помощью Jackson (найдите подходящую «модель», например, nextTo
может быть сопоставлена с Map<Integer, List<Integer>>
), затем реализуйте свой псевдокод.
Комментарии:
1. Спасибо за помощь, не могли бы вы показать мне пример, я очень новичок в этом языке
Ответ №2:
Десериализуйте объект, используя org.json,
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class DesrialiseJSON {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
//json string
String stringToParse="{"Regions" : [{"regionId" : 5,"name" : "South Korea"},{"regionId" : 6,"name" : "North Korea"},{ }],"nextTo" : { "5" : [6], "6" : [5]}}";
try {
//convert to json object
JSONObject json = (JSONObject) parser.parse(stringToParse);
System.out.println(checkNextTo(json));
} catch (ParseException e) {
e.printStackTrace();
}
}
public static boolean checkNextTo(JSONObject json) {
//regions array
JSONArray regionArr=(JSONArray) json.get("Regions");
// Find the id of region1 in the "region" part of the JSON
long regionId1=(Long) ((JSONObject) regionArr.get(0)).get("regionId");
// Find the id of region2 in the "region" part of the JSON
long regionId2=(Long) ((JSONObject) regionArr.get(1)).get("regionId");
JSONObject nextTo=(JSONObject) json.get("nextTo");
Long nextToReg1=(Long) ((JSONArray) nextTo.get(String.valueOf(regionId1))).get(0);
Long nextToReg2=(Long) ((JSONArray) nextTo.get(String.valueOf(regionId2))).get(0);
// Check region1's nextTo regions in the "nextTo" section ofJSON
// If region2 id is in region1 id's nextTo {
//return True
// Else
return regionId1==nextToReg2 || regionId2==nextToReg1;
}
}
Комментарии:
1. Спасибо за помощь, файл json уже импортирован, поэтому не нужно разбирать в строку, как я могу использовать ваш пример, ссылаясь на файл json
2. Я просто проанализировал, чтобы получить
JSONObject
. Если у вас это уже есть, тогда вызовитеcheckNextTo(json)
метод.3. работает, но regionArr.get(0)).get(«id») будет работать только для 1-5 целых чисел,
4. @MikeM почему 1-5? У меня нет места, где жестко закодированы эти значения. Это должен был быть принятый ответ.