2015-09-16 3 views
1

В настоящее время я использую json-simple library в Java для работы с объектами JSON. Большую часть времени я получаю строку JSON от какого-либо внешнего веб-сервиса и должен разбирать и перемещать ее. Даже для некоторых не слишком сложных объектов JSON, которые могут быть довольно длинными, набирают упражнения.Как свободно анализировать и перемещать объекты JSON в Java

Давайте предположим, что я получил следующую строку в responseString:

{ 
    "employees": [ 
    { 
     "firstName": "John", 
     "lastName": "Doe" 
    }, 
    { 
     "firstName": "Anna", 
     "lastName": "Smith" 
    }, 
    { 
     "firstName": "Peter", 
     "lastName": "Jones" 
    } 
    ], 
    "title": "some company", 
    "headcount": 3 
} 

Чтобы получить фамилию сотрудника 3d мне придется:

JSONObject responseJson = (JSONObject) JSONValue.parse(responseString); 
JSONArray employees = (JSONArray) responseJson.get("employees"); 
JSONObject firstEmployee = (JSONObject) employees.get(0); 
String lastName = (String) firstEmployee.get("lastName"); 

Что-то вроде, что, по крайней мере. Не слишком долго в этом случае, но может усложниться.

Есть ли какой-либо способ для меня (возможно, переход к какой-либо другой библиотеке Java?), Чтобы работать с более оптимизированным свободным подходом?

String lastName = JSONValue.parse(responseString).get("employees").get(0).get("lastName") 

Я не могу придумать какой-либо подход к автокалибровке здесь, поэтому по достоинству оценят любые идеи.

ответ

1

Попробуйте Groovy JsonSlurper

println new JsonSlurper().parseText(json).employees[0].lastName 

Выход:

Doe 

Но лучшим решением является JsonPath - с вводом

String name = JsonPath.parse(json).read("$.employees[0].lastName", String.class); 
System.out.println(name); 
Смежные вопросы