Android 如何在JSON中搜索并在活动中返回搜索结果

Android 如何在JSON中搜索并在活动中返回搜索结果,android,json,Android,Json,我正在分析活动中的JSON,以在gridView中显示文本和图像。不过,我想尝试在此JSON上添加搜索功能,并在活动中显示结果 例如在这样的一个在线服务器上考虑< >代码> JSON 脚本:< /强> [ { “标题”:“Ongata Rongai”, “图像”:http://snapt.t15.org/melanie/real_estates/images/house1.jpg", “评级”:550000, “发布年份”:2014年, “风格”:[“宽敞的开放式休息室和厨房”] },

我正在分析活动中的
JSON
,以在
gridView
中显示文本和图像。不过,我想尝试在此
JSON
上添加搜索功能,并在活动中显示结果

<强>例如在这样的一个在线服务器上考虑< <强> >代码> JSON<代码> <强>脚本:< /强>

[
{
“标题”:“Ongata Rongai”,
“图像”:http://snapt.t15.org/melanie/real_estates/images/house1.jpg",
“评级”:550000,
“发布年份”:2014年,
“风格”:[“宽敞的开放式休息室和厨房”]
},
{
“头衔”:“基苏木”,
“图像”:http://snapt.t15.org/melanie/real_estates/images/house2.jpg",
“评级”:170万,
“发布年份”:2014年,
“类型”:[“高端联排别墅”。]
},
{
“标题”:“蒙巴萨”,
“图像”:http://snapt.t15.org/melanie/real_estates/images/house3.jpg",
“评级”:68000,
“发布年份”:2014年,
“风格”:[“其配备齐全的厨房和美丽的后院。”]
}

]
您不能直接搜索json。将json转换为
List
Java类。然后使用Java API,如
谓词
,找到满足条件的必要Java类。对于例如:标题为Kusumu

将类列表限制为满足条件的类。然后,如果需要json,将java类转换回json

注意:您可以使用
GSON
进行简单的
classjson
转换

更新

用于将Json转换为Java类

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

然后使用谓词


此方法根据需要重新选择服务器和标题,并将搜索结果作为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;
}
privateJSONObject搜索方法(字符串结果、字符串键)
{
//结果是您的服务器响应
//关键是基苏木
JSONArray json=新JSONArray(结果);

对于(int i=0;我的意思是:你想从服务器上搜索数据?或者根据你的输入,你想从服务器上获得过滤结果?@Atmaram无论哪种方式听起来都不错,这是一种最简单可行的简洁解决方案。你可以给我指一个工作示例吗?我对此完全是新手。谢谢,让我试试,我会回来的对你来说,我很好奇我到底把它放在哪里。假设我有一个带有editText和搜索按钮的活动。我如何实现这个方法?这个方法必须用于JSON字符串,并将其解析为JSON对象在onPostExecute中使用这个方法(如果使用asynctaks类调用你的Web服务)从服务器给出结果(结果是json字符串)并调用方法SearchMethod(结果,YourEditText.GetText());检查以下内容:
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);
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;
}