我如何从Json对象和数组获取数据 - java

我收到请求,但无法从json对象获取jsonarray。

JSONObject ob = JSONObject.fromObject(response.toString());

JSONArray arr = ob.getJSONArray("results");

for (int i = 0; i < arr.size(); i++) {
    JSONObject jsonAuth = arr.getJSONObject(i);
    String PREFIX = jsonAuth.get("PREFIX").toString();
}

我的json:

{
    "d": {
        "results": [{
            "__metadata": {
                "type": "ceodo.cco.loc_do.OdataV2.SecuenciasType",
                "uri": "com:443/ceodo/cco/loc_do/OdataV2.xsodata/Secuencias('d76fffbe-8c3b-4c66-bd7f-16c9d099d143')"
            },
            "SEC_ID": "d76fffbe-8c3b-4c66-bd7f-16c9d099d143",
            "PREFIX": "B",
            "TIPO_NCF": "01",
            "NUM_FROM": 50,
            "NUM_TO": 100,
            "NUM_CURRENT": 25,
            "VALID_UNTIL": "\/Date(1556582400000)\/",
            "CAJA": "b1c913fc-e319-476f-8295-64782b77de52"
        }, {
            "__metadata": {
                "type": "ceodo.cco.loc_do.OdataV2.SecuenciasType",
                "uri": "com:443/ceodo/cco/loc_do/OdataV2.xsodata/Secuencias('f3323600-6bf2-4e90-8856-56390595d748')"
            },
            "SEC_ID": "f3323600-6bf2-4e90-8856-56390595d748",
            "PREFIX": "B",
            "TIPO_NCF": "02",
            "NUM_FROM": 1,
            "NUM_TO": 100,
            "NUM_CURRENT": 35,
            "VALID_UNTIL": "\/Date(1554249600000)\/",
            "CAJA": "c90030fb-030b-4a99-929a-adc72eaf082f"
        }]
    }
}

参考方案

好了,您可以先调用“ d”对象。

json文件的顺序应从d(JSONObject)标记到results(JSONArray)标记。

这是使用另一个json library的代码

import org.json.JSONArray;
import org.json.JSONObject;

... skip ...

//JSONObject ob = JSONObject.fromObject(resBuf.toString());
JSONObject ob = new JSONObject(resBuf.toString());
if(ob.has("d"))
{
    JSONObject dobj = ob.getJSONObject("d");

    if(dobj.has("results"))
    {
        JSONArray arr = dobj.getJSONArray("results");

        System.out.println(arr.length());

        for (int i = 0; i < arr.length(); i++) {
            JSONObject jsonAuth = arr.getJSONObject(i);
            String PREFIX = jsonAuth.get("PREFIX").toString();
            System.out.println(PREFIX);
        }
    }

}       

JSON PATH字段NULL检查表达式 - java

我有一个像bellow的json数组:{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sa…

Java Map,如何将UTF-8字符串正确放置到地图? - java

我有一个地图,LinkedHashMap更确切地说。我想在上面放一个字符串对象。然后,我读取此值以查看实际存储的内容。字符串本身具有非ASCII字符(西里尔文,韩文等)。将其放到地图上然后阅读后,这些字符将替换为??? s。一些代码:Map obj = new LinkedHashMap(); System.out.println("name: &…

Java Double与BigDecimal - java

我正在查看一些使用双精度变量来存储(360-359.9998779296875)结果为0.0001220703125的代码。 double变量将其存储为-1.220703125E-4。当我使用BigDecimal时,其存储为0.0001220703125。为什么将它双重存储为-1.220703125E-4? 参考方案 我不会在这里提及精度问题,而只会提及数字…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

Java-父类正在从子类中调用方法? - java

抱歉,我还是编码的新手,可能还没有掌握所有术语。希望您仍然能理解我的问题。我想得到的输出是:"Cost for Parent is: 77.77" "Cost for Child is: 33.33" 但是,我得到这个:"Cost for Parent is: 33.33" "Cost f…