2013-03-07 5 views
-1

Обновление: Я должен был упомянуть об этом сразу с места в карьер: сначала я рассмотрел структуру сопоставления Java/JSON, но мой менеджер не хочет, чтобы я добавлял больше зависимостей от проекта, поэтому это исключение. Барабан JSON-Java уже находится в нашем пути к классам, поэтому я мог бы использовать это, но все же не видел лес через деревья о том, как его можно использовать.Самый простой способ извлечь поля из JSON

программа

Мой Java является вручают JSON следующего вида (Althought значения будут меняться все время):

{"order":{"booze":"1","handled":"0","credits":"0.6", 
    "execute":0,"available":["299258"],"approved":[], 
    "blizzard":"143030","reviewable":["930932","283982","782821"], 
    "units":"6","pending":["298233","329449"],"hobbit":"blasphemy"}} 

Я ищу самый простой, эффективный, верный способ вишневого выбора конкретных значения из этой строки JSON и агрегирование их в List<Long>.

В частности, я ищу для приточно-агрегатного все «идентификаторов», то есть, все числовых значения, которые вы видите на поля available, approved, reviewable и pending. Каждое из этих полей представляет собой массив из 0+ «идентификаторов». Так, в приведенном выше примере, мы видим следующую разбивку идентификаторов:

  • available: имеет 1 идентификатор (299258)
  • approved: имеет 0 идентификаторов
  • reviewable: имеет 3 идентификаторов (930932, 283982, 782821)
  • pending: имеют 2 идентификаторов (298233, 329449)

мне нужна немного Java кода для запуска и производит List<Long> со всеми 6 из этих добытых идентификаторов , в определенном порядке. Иды просто должны сделать это в списке.

Это похоже на невероятно сложное, сложное регулярное выражение, и я даже не уверен, с чего начать. Любая помощь вообще чрезвычайно ценится. Заранее спасибо.

+0

Regex? Почему бы просто не разобрать JSON? –

+0

http://json.org/javadoc/org/json/package-summary.html –

+0

Спасибо, пожалуйста, см. Мое обновление – IAmYourFaja

ответ

5

Самый простой способ ИМО использовать библиотеку JSON, такие как gson, jackson, json.org и т.д., синтаксический анализ де JSON в объект и создать новый List<Long> со значениями свойств, которые необходимо.

ПСЕВДОКОД с gson:

class Order { 
    long[] available; 
    long[] approved; 
    ... 
} 

Order order = gson.fromJson("{ your json goes here }", Order.class); 

List<Long> result = new ArrayList<Long>(); 
result.add(order.getAvailable()); 
result.add(order.getApproved()); 
... 

ПСЕВДОКОД с json.org/java:

JSONObject myobject = new JSONObject("{ your json goes here"}); 
JSONObject order = myobject.getJSONObject("order"); 

List<Long> result = new ArrayList<Long>(); 
for (int i=0; i<order.getJSONArray("approved").length(); i++) { 
    Long value = order.getJSONArray("approved").getLong(i); 
    result.add(value); 
} 
... 
+0

Спасибо @Guido Garcia (+1) - см. Мое обновление, но, используя структуру отображения, к сожалению не возможность для меня. – IAmYourFaja

+0

Я только что добавил пример с библиотекой, которую у вас уже есть в вашем пути к классам. –

Смежные вопросы