Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
JavaJSON返回一个数组作为值_Java_Arrays_Json - Fatal编程技术网

JavaJSON返回一个数组作为值

JavaJSON返回一个数组作为值,java,arrays,json,Java,Arrays,Json,我有一个JSON对象,比如 { "endtime": 1446188340, "interval": 60, "metrics": { "heartrate": { "values": [ 88, 92, 88, 89, 86, 84,

我有一个JSON对象,比如

{
    "endtime": 1446188340,
    "interval": 60,
    "metrics": {
        "heartrate": {
            "values": [
                88,
                92,
                88,
                89,
                86,
                84,
                82,
                86,
                97,
                77,
                81,
                87,
                83,
                101,
                96,
                97,
                123,
                123,
                127,
                127,
                127,
                130,
                134,
                133,
                129,
                126,
                121,
                137,
                141,
                149,
                144,
                120,
                104,
                102,
                100,
                107,
                116,
                107,
                98,
                97,
                115,
                107,
                106,
                98
            ]
        }
    },
    "starttime": 1446102000,
    "timezone_history": [
        {
            "offset": -7,
            "start": 1446102000,
            "timezone": "America\/Los_Angeles"
        }
    ]
}
如何获得“值”下的心率数据数组

如果我打印:

JSONObject a = new JSONObject(obj.getJSONObject("metrics").getJSONObject("heartrate"));
我刚刚得到:

{}

而且JSONArray似乎也不是正确的选择。我只想得到一系列我可以使用的双打。谢谢大家!

我认为这应该可以做到:

JSONObject main = new JSONObject(MyJsonString);
JSONArray values = main.getJSONObject("metrics")
                    .getJSONObject("heartrate").getJSONArray("values");

JSON经验法则:


  • '['
    表示
    JSONArray
    节点的开始

  • '{'
    表示
    JSONObject

如果您的JSON节点以
[
开头,那么我们应该使用
getJSONArray()
方法。而如果节点以
{
开头,那么我们应该使用
getJSONObject()
方法

下面是获取双值的代码

   public static ArrayList<Double> getHeartRates(String jsonString) throws JSONException {
            ArrayList<Double> values = new ArrayList<>();
            // root JSON Object.
            JSONObject jsonObject = new JSONObject(jsonString);

            JSONObject metrics = jsonObject.getJSONObject("metrics");
            JSONObject heartRate = metrics.getJSONObject("heartrate");
            JSONArray valuesArray = heartRate.getJSONArray("values");

            for (int i = 0; i < valuesArray.length(); i++) {                                       
                values.add(valuesArray.getDouble(i));
            }

            return values;
        }
publicstaticarraylistgetheartrates(字符串jsonString)抛出JSONException{
ArrayList值=新的ArrayList();
//根JSON对象。
JSONObject JSONObject=新的JSONObject(jsonString);
JSONObject metrics=JSONObject.getJSONObject(“metrics”);
JSONObject心率=metrics.getJSONObject(“心率”);
JSONArray valuesArray=心率。getJSONArray(“值”);
对于(int i=0;i
谢谢你的解决方案。我想知道你是否能帮我澄清一下。我以为JSON数组是JSON对象的数组,比如[“key1”:value,“key2”:value,“key3”:value]。但是我有一个JSON对象,其中值是数组,比如“key1”:[1,2,3]。你怎么把[1,2,3]称为JSONArray?谢谢!