我正在我的活动中解析JSON
以在gridView
中显示文字和图片。但我想尝试在此{{}上添加搜索功能 1}}并在活动上显示结果。
例如,考虑在线服务器上的 JSON
脚本,如下所示:
JSON

我想实现标题的搜索,例如 Kisumu ,并且要显示的结果将仅来自此部分,以便我单独解析:
[
{
"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"]
},
{
"title": "Kisumu",
"image": "http://snapt.t15.org/melanie/real_estates/images/house2.jpg",
"rating": 1 700 000,
"releaseYear": 2014,
"genre": ["high end townhouse."]
},
{
"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."]
}
]

有没有办法实现上述目标?
我愿意接受意见和建议,我们将不胜感激。
答案 0 :(得分:2)
您无法直接搜索json。将json转换为List
Java类。然后使用像Predicate
这样的Java API来查找满足条件的必要java类。 例如:标题为 Kusumu ,如您所知。
这会将类列表限制为满足条件的类。如果需要Json,则将java类转换回json。
注意:您可以使用GSON
轻松class <-> json
转换
<强>更新强>
将Json转换为Java类
List<ModelClass> models = new Gson().fromJson(yourJsonString, ModelClass.java);
然后使用谓词
public static Predicate<ModelClass> isHavingTitle() { return p -> p.getTitle().contains("Kusumu"); }
在Java 8中,谓词过滤可以像下面这样完成,在其他情况下你可以谷歌它。这是一个样本
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);
答案 1 :(得分: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;
}