2015-06-30 2 views
2

Я разбор JSON в моей деятельности, чтобы отобразить текст и изображения в gridView .Однако я хотел бы попробовать добавить функции поиска на этом JSON и отображение результаты деятельности.Как искать в JSON и возвращать результаты поиска в деятельности

Для примера рассмотримJSONскрипт на интернет-сервере, как это:

[ 
 
    { 
 
     "title": "Ongata Rongai", 
 
     "image": "http://snapt.t15.org/melanie/real_estates/images/house1.jpg", 
 
     "rating": 5 500 000, 
 
     "releaseYear": 2014, 
 
     "genre": ["Spacious open lounge and kitchen"] 
 
    }, 
 
\t { 
 
     "title": "Kisumu", 
 
     "image": "http://snapt.t15.org/melanie/real_estates/images/house2.jpg", 
 
     "rating": 1 700 000, 
 
     "releaseYear": 2014, 
 
     "genre": ["high end townhouse."] 
 
    }, 
 
\t { 
 
     "title": "Mombasa", 
 
     "image": "http://snapt.t15.org/melanie/real_estates/images/house3.jpg", 
 
     "rating": 68 000, 
 
     "releaseYear": 2014, 
 
     "genre": ["Its fully fitted kitchedn pantry with a beautyful backyard."] 
 
    } 
 
    ]

Я хотел бы осуществить поиск титул как Кисуму а результат, который будет отображаться, будет из этой части только для того, чтобы я разобрал это:

[ 
 
\t { 
 
     "title": "Kisumu", 
 
     "image": "http://snapt.t15.org/melanie/real_estates/images/house2.jpg", 
 
     "rating": 1 700 000, 
 
     "releaseYear": 2014, 
 
     "genre": ["high end townhouse."] 
 
    } 
 
    ]

Есть ли способ достижения выше?

Я открыт для идей и предложений, и любая помощь будет оценена по достоинству.

+0

У вас означает: вы хотите искать данные, поступающие с сервера? или на основе вашего ввода вы хотите получить результаты фильтрации с сервера? – Atmaram

+0

@Atmaram в любом случае звучит отлично, jus the one with the simpleest workingable neat solution –

ответ

2

Вы не можете искать json напрямую. Преобразуйте json в классы List Java. Затем используйте Java API, например Predicate, чтобы найти необходимый класс java, который удовлетворяет вашему состоянию. Для например: Заглавие Kusumu как вы просили.

Который ограничит список классов тем, которые удовлетворяют условию. Затем переведите класс java обратно в json, если вам нужен Json.

Примечание: Вы можете использовать GSON для легкого class <-> json преобразования

UPDATE

Для преобразования JSON в классы Java

List<ModelClass> models = new Gson().fromJson(yourJsonString, ModelClass.java);

Затем, используя предикат

public static Predicate<ModelClass> isHavingTitle() { 
    return p -> p.getTitle().contains("Kusumu"); 
} 

В Java 8 предикатная фильтрация может быть выполнена, как показано ниже, в другом случае вы можете просто отправить ее в Google. Это образец

public static List<ModelClass> filterEmployees (List<ModelClass> models, Predicate<ModelClass> predicate) { 
    return models.stream().filter(predicate).collect(Collectors.<ModelClass>toList()); 
} 

Я не компилировать все это :)

String filteredJson = new Gson().toJson(models); 
+0

Есть ли рабочий пример, на который вы можете указать мне? Я полностью новичок в этом. –

+0

Спасибо, позвольте мне попробовать это, и я вернусь к вам –

0

этот метод даст resualt сервера и название, как вы хотите, и возвращает результат поиска как JSONObject

private JSONObject SearchMethod(String result,String Key) 
{ 

//result is your server response 
//Key is Kisumu 
JSONArray json = new JSONArray(result); 

    for(int i=0;i<json.length();i++){       
     JSONObject e = json.getJSONObject(i); 
     if(e.c.getString("title").contains(Key)) 
      return e ;  
     } 
    return null; 
} 
+0

Мне любопытно, где именно я положил это. Предположим, у меня есть активность с кнопкой editText и search..Как реализовать этот метод? –

+0

этот метод должен быть работа для JSON строки и разобрать, что JSON объектов –

+0

использовать этот метод в onPostExecute (если использовать asynctaks класс для называть ваш вебсервис) дают результат от сервера (результат JSON строка) и вызов метода SearchMethod (результат , YourEditText.GetText()); –

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