如何过滤字符串/列表?

时间:2013-09-19 09:31:39

标签: java json list filter

我没有。数组/列表项的格式:(我使用的是Java)

{"scout": "webdriver", "short_version": "4.3", "long_name": "iPad", "api_name": "ipad", 

"long_version": "4.3.", "automation_backend": "webdriver", "os": "Mac 10.6"}

我只需要:"os": "Mac 10.6" 如何使用list / json过滤它?

我的阵列得到了:

String[] str = platformJsonContent.split("}");

现在我得到了名单:

List<String> platforms = new ArrayList<String>();

        for(int i=0; i<size; i++){
            platforms.add(str[i]);
        }

//过滤器应该在这里

4 个答案:

答案 0 :(得分:4)

使用JSONObject或其他人阅读它可能更好。

JSONObject platforms = new JSONOBject(platformJsonContent);

platforms.get("os");
#=> "Mac 10.6"

请在此处查看更多文档:http://json.org/javadoc/org/json/JSONObject.html

如果你需要专门用作数组,最好使用JSONArray,它可以在解析后使用JSONObject上的.getJSONArray方法从JSONObject获取。

http://json.org/javadoc/org/json/JSONArray.html

您需要下载并引用JSON java包:http://www.json.org/java/json.org,然后在任何构建系统中设置引用。最终代码可能类似于:

import org.json.JSONObject;
import org.json.JSONException;

public class Test {
    public static void main(String[] args) {
        try {
            String platformJsonContent = "{\"scout\": \"webdriver\", \"short_version\": \"4.3\", \"long_name\": \"iPad\", \"api_name\": \"ipad\", \"long_version\": \"4.3.\", \"automation_backend\": \"webdriver\", \"os\": \"Mac 10.6\"}";

            JSONObject platforms = new JSONObject(platformJsonContent);

            System.out.println(platforms.get("os"));
        } catch(JSONException ex) {
            // do something...
        }
    }
}

运行并输出“Mac 10.6”

答案 1 :(得分:0)

如果您使用的是JEE7,请查看http://docs.oracle.com/javaee/7/tutorial/doc/jsonp.htm

答案 2 :(得分:0)

假设您决定不使用任何库,这里有一种方法可以获得“os”

//Assuming your jsonString is like this - "\"long_version\": \"4.3.\", \"automation_backend\": \"webdriver\", \"os\": \"Mac 10.6\""
Map<String, String> pairs = getJsonMap(jsonString);
pairs.get("os")

这是你如何做getJsonMap()

    private Map<String,String> getJsonMap(String jsonString){
        String[] eachPair = jsonString.replaceAll("\"", "").split(",");
        Map<String,String> pairs = new HashMap<String,String>();
        for(String pair: eachPair) {
            pairs.put(pair.substring(0, pair.indexOf(":")).trim(), pair.substring(pair.indexOf(":")+1));
        }
        return pairs;
    }

我仍然强烈建议您查看JSON对Java的支持。

答案 3 :(得分:0)

Boon在2014年3月的JVM上拥有最快的JSON解析器,并且它具有切片表示法。

所以.....

鉴于此JSON:

    String json = "{\"scout\": \"webdriver\", \"short_version\": \"4.3\", \"long_name\": \"iPad\", \"api_name\": \"ipad\", \n" +
            "\n" +
            "\"long_version\": \"4.3.\", \"automation_backend\": \"webdriver\", \"os\": \"Mac 10.6\"}";

你可以过滤它&#34;像这样:

    System.out.println( atIndex( fromJson(json), "os" ) ); //one line of code

输出:

Mac 10.6

您可以在此处详细了解Boon:http://www.dzone.com/links/1091051.html 在这里:http://rick-hightower.blogspot.com/2014/03/boon-filtering-for-java-beans-json-and.html

Boon允许您解析JSON,将Java对象序列化为JSON,依赖注入JSON,将JSON编组到方法调用,将JSON编组到构造函数调用,搜索索引JSON,实际过滤JSON以及排序JSON。如果你能想到你想用JSON做些什么,Boon可能就是这么做的。

https://github.com/RichardHightower/boon

(有一会儿......好像我正在向阿甘正传一个场景。你可以炒虾,烤虾,蒸虾。还有虾浓汤,......)