Невозможно получить требуемое значение из JSON в Java"Метод getString(String) не определен для типа String""
У меня есть 2 json, где мне нужно сравнить и получить соответствующее значение, я использую следующий способ в Java, где логическое условие работает нормально и возвращает сравнение после сравнения, но не может получить значение из getString, получая сообщение об ошибке "The метод getString(String) не определен для типа String"
scriptToRunJsonString - {"scriptid":1,"OrderNumber":10,"Date":"100"}
argumentdetailsforRunner - [ScriptArgumentDetailsForRunner [ScriptId=1,ScriptArgumentName=OrderNumber,ScriptArgumentNumber=1,ScriptArgumentNumber=1]]
JsonargumentdetailsforRunner - [{"ScriptId":1,"ScriptArgumentName":"OrderNumber","ScriptArgumentNumber":1}]
for (int i = 0; i < JsonargumentdetailsforRunner.length(); i++) {
if (scriptToRunJsonString.contains(argumentdetailsforRunner.get(i).getScriptArgumentName().toString())) {
String argumentStringValue=scriptToRunJsonString.getString(argumentdetailsforRunner.get(i).getScriptArgumentName().toString());
log.info(argumentStringValue);
}}
булево условие работает нормально и возвращает значение как true
boolean argumentStringValue=scriptToRunJsonString.contains(argumentdetailsforRunner.get(i).getScriptArgumentName().toString());
2018-06-07 08:12:05 INFO RunnerService:50 - true
2018-06-07 08:12:05 INFO RunnerService:50 - true
Поэтому я преобразовал scriptToRunJsonString в JsonObject и решил исходную проблему, указанную в этой проблеме, выполнив следующий шаг:
String argumentStringValue=jsonScriptToRun.get(argumentdetailsforRunner.get(i).getScriptArgumentName().toString()).toString();
но теперь я получаю сообщение об ошибке, как разрешить IndexOutOfBoundsException в моем случае?
An unexpected error occurred occurred at servetjava.lang.IndexOutOfBoundsException: Index: 2, Size: 2
1 ответ
scriptToRunJsonString
это строка, используйте JsonargumentdetailsforRunner
который является экземпляром коллекции.
К сожалению, вы не упомянули типы ваших объектов, попытка это может работать в зависимости от реального типа JsonargumentdetailsforRunner
,
for (int i = 0; i < argumentdetailsforRunner.length(); i++) {
String key = argumentdetailsforRunner.get(i).getScriptArgumentName().toString();
if (JsonargumentdetailsforRunner.contains(key)) {
String argumentStringValue=JsonargumentdetailsforRunner.getString(key);
log.info(argumentStringValue);
}
}