Невозможно получить требуемое значение из 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);
    }
}
Другие вопросы по тегам