Java 从JSON数组中提取数据

Java 从JSON数组中提取数据,java,json,Java,Json,我知道它是一个数组,但我对JSON完全陌生,需要帮助理解它的结构,以下是我提取数据的尝试: String JSonString = readURL("//my URL is here"); JSONArray s = JSONArray.fromObject(JSonString); JSONObject Data =(JSONObject)(s.getJSONObject(0)); System.out.println(Data.get("name")); 我的JSON数据如下所示: {

我知道它是一个数组,但我对JSON完全陌生,需要帮助理解它的结构,以下是我提取数据的尝试:

String JSonString = readURL("//my URL is here");
JSONArray s = JSONArray.fromObject(JSonString);
JSONObject Data =(JSONObject)(s.getJSONObject(0));
System.out.println(Data.get("name"));
我的JSON数据如下所示:

 {
"sports": [
    {
        "name": "basketball",
        "id": 40,
        "uid": "s:40",
        "leagues": [
            {
                "name": "National Basketball Assoc.",
                "abbreviation": "nba",
                "id": 46,
                "uid": "s:40~l:46",
                "groupId": 7,
                "shortName": "NBA",
                "athletes": []
            }
        ]
    }
],
"resultsOffset": 10,
"resultsLimit": 10,
"resultsCount": 1,
"timestamp": "2013-11-18T03:15:43Z",
"status": "success"
}

我对这件事不是很了解,所以非常感谢你的帮助

JSON表示JavaScript对象表示法

Java脚本中的对象只是容器,可以用键值对表示。请查找以下符号以了解json

用json表示对象:例如学生

{"name" : "Robin", "rollnumber" : "1"}
用json表示数组:例如学生数组

[{"name" : "Robin", "rollnumber" : "1"}, {"name" : "Mark", "rollnumber" : "2"}]
您可以从这个链接上的图表了解更多关于JSON的信息

将JSON转换为javaobject和将javaobject转换为JSON有多种方法:其中之一是

JSONObject root = new JSONObject(yourJsonString);
JSONArray sportsArray = root.getJSONArray("sports");

// now get the first element:
JSONObject firstSport = sportsArray.getJSONObject(0);

// and details of the first element
String name = firstSport.getString("name"); // basketball
int id = firstSport.getInt("id"); // 40
JSONArray leaguesArray = firstSport.getJSONArray("leagues");

// and so on, you can process leaguesArray similarly

它应该可以工作(如果有编译错误,请随时抱怨)

您的JSON数据是一个对象(它以大括号开始)。在下一个内层中,有一个数组(在“sports”键处):


我可能使用了另一个JSON库,而不是您。

在导入的同时在这里添加详细的代码

如果这有帮助的话

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

public class extractingJSON {

    public static void main(String[] args) throws JSONException {
        // TODO Auto-generated method stub

        String jsonStr = "{\"name\":\"SK\",\"arr\":{\"a\":\"1\",\"b\":\"2\"},\"arrArray\":[{\"a\":\"1\",\"b\":\"2\"}]}";
        JSONObject jsonObj = new JSONObject(jsonStr);
        String name = jsonObj.getString("name");
        System.out.println(name);

        String first = jsonObj.getJSONObject("arr").getString("a");
        System.out.println(first);

        first = jsonObj.getJSONArray("arrArray").getJSONObject(0).getString("a");
        System.out.println(first);



    }


}

你必须先提取
sports
。就像我说的,我不知道这是如何构造的,所以代码示例会有所帮助。你问题中的JSON数据是一个对象(而不是数组),它是无效的。(试试或者使用类似的工具。)那么括号和大括号代表什么呢?一个大括号开始一个JSON对象。一个左括号开始一个数组。数据以大括号(对象)开始,以右括号结束(无效)。
import org.json.JSONException;
import org.json.JSONObject;

public class extractingJSON {

    public static void main(String[] args) throws JSONException {
        // TODO Auto-generated method stub

        String jsonStr = "{\"name\":\"SK\",\"arr\":{\"a\":\"1\",\"b\":\"2\"},\"arrArray\":[{\"a\":\"1\",\"b\":\"2\"}]}";
        JSONObject jsonObj = new JSONObject(jsonStr);
        String name = jsonObj.getString("name");
        System.out.println(name);

        String first = jsonObj.getJSONObject("arr").getString("a");
        System.out.println(first);

        first = jsonObj.getJSONArray("arrArray").getJSONObject(0).getString("a");
        System.out.println(first);



    }


}