Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将给定字符串解析为json?_Java_Json_Httpclient - Fatal编程技术网

Java 如何将给定字符串解析为json?

Java 如何将给定字符串解析为json?,java,json,httpclient,Java,Json,Httpclient,我是通过HttpClient从网站上获得此值的 [ { "scout": "webdriver", "short_version": "4.3", "long_name": "iPad", "api_name": "ipad", "long_version": "4.3.", "automation_backend": "webdriver", "os": "Mac 10.4"

我是通过
HttpClient
从网站上获得此值的

[
    {
        "scout": "webdriver",
        "short_version": "4.3",
        "long_name": "iPad",
        "api_name": "ipad",
        "long_version": "4.3.",
        "automation_backend": "webdriver",
        "os": "Mac 10.4"
    },
    {
        "scout": "webdriver",
        "short_version": "5.0",
        "long_name": "Firefox",
        "api_name": "firefox",
        "long_version": "14",
        "automation_backend": "webdriver",
        "os": "Mac 10.5"
    },
    {
        "scout": "webdriver",
        "short_version": "4",
        "long_name": "Firefox",
        "api_name": "firefox",
        "long_version": "15",
        "automation_backend": "webdriver",
        "os": "Mac 10.6"
    },
    {
        "scout": "webdriver",
        "short_version": "5",
        "long_name": "Chrome",
        "api_name": "chrome",
        "long_version": "5.0.1.",
        "automation_backend": "webdriver",
        "os": "Mac 10.7"
    }
]
我想将此数据转换为以下格式:

[OS: {Mac10.4,Mac10.5}]
等等,操作系统列表

浏览器及其版本的列表

操作系统和浏览器列表太长。 如何使用json或任何其他方法解析它?

请执行以下操作:

$(document).ready(function(){
//here getting the json Array from session
    var d  = json1;
    //after making a variable array to put j son data one by one by looping
    var availableTags = new Array();
    for(var i=0;i<d.forms.length;i++){
        availableTags[i] = d.forms[i].productName;
    }
});
$(文档).ready(函数(){
//这里是从会话获取json数组
var d=json1;
//在做了一个变量数组后,通过循环将j子数据逐个放入
var availableTags=新数组();

对于(var i=0;i我建议您看看json智能库。它轻量级且快速。()

然后你可以写这样的东西(只是一个例子):

Map osMap=newhashmap();
put(“OS”,新的ArrayList());
映射apiNameMap=
新的HashMap();
put(“api_name”,new HashMap());
JSONArray ja=(JSONArray)JSONValue.parse(JSON_字符串);
用于(对象对象对象:ja){
JSONObject jsonObj=(JSONObject)obj;
String os=(String)jsonObj.get(“os”);
字符串apiName=(字符串)jsonObj.get(“api_名称”);
String longVersion=(String)jsonObj.get(“long_version”);
//操作系统
如果(!osMap.get(“OS”).包含(OS)){
osMap.get(“OS”).add(OS);
}
//原料药
if(!apiNameMap.get(“api_name”).containsKey(apiName)){
获取(“api_名称”)
.put(apiName,new ArrayList());
}
apiNameMap.get(“api_name”).get(apiName).add(longVersion);
}
System.out.println(JSONValue.toJSONString(osMap));
System.out.println(JSONValue.toJSONString(apiNameMap));

Google提供。为什么不尝试使用它呢。您甚至可以使用标准来解析您的响应!如果您想了解如何使用它们来解析,请与Google先生联系。:)为什么不以jackson为例进行解析并用java进行分组呢?我使用了json,但它给出了错误,因为我告诉过它数组太长了。@jitendrakhear-仅仅因为json太大,解析就不会给出错误。因为json的长度,你的解析逻辑会有缺陷。@R.J你能给我一个正确的答案吗,我的控制器R现在我的ajax调用是:$.ajax({url:'getSaucePlatforms.htm',type:'POST',async:false,success:function(data){alert(data);}});会有什么变化?
$(document).ready(function(){
//here getting the json Array from session
    var d  = json1;
    //after making a variable array to put j son data one by one by looping
    var availableTags = new Array();
    for(var i=0;i<d.forms.length;i++){
        availableTags[i] = d.forms[i].productName;
    }
});
    Map<String, List<String>> osMap = new HashMap<String, List<String>>();
    osMap.put("OS", new ArrayList<String>());

    Map<String, Map<String, List<String>>> apiNameMap = 
        new HashMap<String, Map<String, List<String>>>();
    apiNameMap.put("api_name", new HashMap<String, List<String>>());

    JSONArray ja = (JSONArray) JSONValue.parse(JSON_STRING);
    for (Object obj : ja) {
        JSONObject jsonObj = (JSONObject) obj;
        String os = (String) jsonObj.get("os");
        String apiName = (String) jsonObj.get("api_name");
        String longVersion = (String) jsonObj.get("long_version");

        // OS
        if (!osMap.get("OS").contains(os)) {
            osMap.get("OS").add(os);
        }

        // API
        if (!apiNameMap.get("api_name").containsKey(apiName)) {
            apiNameMap.get("api_name")
                    .put(apiName, new ArrayList<String>());
        }
        apiNameMap.get("api_name").get(apiName).add(longVersion);

    }

    System.out.println(JSONValue.toJSONString(osMap));
    System.out.println(JSONValue.toJSONString(apiNameMap));