org.json.JSONException:JSONArray[0]不是JSONObject-Java

org.json.JSONException:JSONArray[0]不是JSONObject-Java,java,arrays,json,Java,Arrays,Json,您好,我正在尝试读取和解析一个JSON文件,当我尝试读取它时,得到了异常=org.JSON.JSONException:JSONArray[0]不是JSONObject。为了举例,JSON被缩短了。将提供我的代码、json和所需的输出 代码: 通缉令 1.03 任何帮助都将不胜感激。如果您再次检查json,您将注意到数组中有数组,然后是对象。 [{}]] 试试这个输入,[{}] [{appId:MBSP,askPrice:0,bidPrice:0,collectionDataSource:E

您好,我正在尝试读取和解析一个JSON文件,当我尝试读取它时,得到了异常=org.JSON.JSONException:JSONArray[0]不是JSONObject。为了举例,JSON被缩短了。将提供我的代码、json和所需的输出

代码:

通缉令

 1.03

任何帮助都将不胜感激。

如果您再次检查json,您将注意到数组中有数组,然后是对象。 [{}]]

试试这个输入,[{}]

[{appId:MBSP,askPrice:0,bidPrice:0,collectionDataSource:ExternalTick,collectionName:FRM_MBS_TBA_FN_15Y_0.03_FWD0,collectionObservationTime:2020-09-21T17:47:59.703Z,collectionType:LIVE,优惠券:1.03,createdBy:Test,createdOn:2020-09-21T17:47:59.703Z,createdOnDate:0,forward:0,issuingAgency:FF,LastUpdate:2020-09-21T17:59.5903Z,lastUpdatedBy:string,lastUpdatedDate:0,到期日:,中间价:0,mtaVersionNumber:0,结算日期:2020-09-21T17:47:59.703Z}]

另一种方法是在代码中处理访问 获取json对象的json数组


谢谢,我希望这对您有所帮助。

您的JSON输入似乎无效:

否[…] 成熟度:,可能不是有效的json节点 代码字符串优惠券=jsonobject.getStringToucon;不正确 解决方案:

更新JSON输入,如。[…] 将到期日更新为有效的偶数值为空/空 将代码更改为字符串优惠券=jsonobject.getStringToucon;
有效的JSON应该是:

[
  {
    "appId": "MBSP",
    "askPrice": 0,
    "bidPrice": 0,
    "collectionDataSource": "ExternalTick",
    "collectionName": "FRM_MBS_TBA_FN_15Y_0.03_FWD0",
    "collectionObservationTime": "2020-09-21T17:47:59.703Z",
    "collectionType": "LIVE",
    "coupon": 1.03,
    "createdBy": "Test",
    "createdOn": "2020-09-21T17:47:59.703Z",
    "createdOnDate": 0,
    "forward": 0,
    "issuingAgency": "FF",
    "lastUpdated": "2020-09-21T17:47:59.703Z",
    "lastUpdatedBy": "string",
    "lastUpdatedDate": 0,
    "maturity": 0,
    "midPrice":0 ,
    "mtaVersionNumber": 0,
    "settlementDate": "2020-09-21T17:47:59.703Z"
  }
]
同时更新代码:

public class Sample {

    public static void main(String[] args) {
        String json = "[{\n" + 
                "   \"appId\": \"MBSP\",\n" + 
                "   \"askPrice\": 0,\n" + 
                "   \"bidPrice\": 0,\n" + 
                "   \"collectionDataSource\": \"ExternalTick\",\n" + 
                "   \"collectionName\": \"FRM_MBS_TBA_FN_15Y_0.03_FWD0\",\n" + 
                "   \"collectionObservationTime\": \"2020-09-21T17:47:59.703Z\",\n" + 
                "   \"collectionType\": \"LIVE\",\n" + 
                "   \"coupon\": 1.03,\n" + 
                "   \"createdBy\": \"Test\",\n" + 
                "   \"createdOn\": \"2020-09-21T17:47:59.703Z\",\n" + 
                "   \"createdOnDate\": 0,\n" + 
                "   \"forward\": 0,\n" + 
                "   \"issuingAgency\": \"FF\",\n" + 
                "   \"lastUpdated\": \"2020-09-21T17:47:59.703Z\",\n" + 
                "   \"lastUpdatedBy\": \"string\",\n" + 
                "   \"lastUpdatedDate\": 0,\n" + 
                "   \"maturity\": 0,\n" + 
                "   \"midPrice\": 0,\n" + 
                "   \"mtaVersionNumber\": 0,\n" + 
                "   \"settlementDate\": \"2020-09-21T17:47:59.703Z\"\n" + 
                "}]";
        JSONArray jsonObj = new JSONArray(json);
        for (int i = 0; i < jsonObj.length(); i++) {
            JSONObject jsonobject = jsonObj.getJSONObject(i);
            double Coupon = jsonobject.getDouble("coupon");
            System.out.println(Coupon);
        }
    }

}
[
  {
    "appId": "MBSP",
    "askPrice": 0,
    "bidPrice": 0,
    "collectionDataSource": "ExternalTick",
    "collectionName": "FRM_MBS_TBA_FN_15Y_0.03_FWD0",
    "collectionObservationTime": "2020-09-21T17:47:59.703Z",
    "collectionType": "LIVE",
    "coupon": 1.03,
    "createdBy": "Test",
    "createdOn": "2020-09-21T17:47:59.703Z",
    "createdOnDate": 0,
    "forward": 0,
    "issuingAgency": "FF",
    "lastUpdated": "2020-09-21T17:47:59.703Z",
    "lastUpdatedBy": "string",
    "lastUpdatedDate": 0,
    "maturity": 0,
    "midPrice":0 ,
    "mtaVersionNumber": 0,
    "settlementDate": "2020-09-21T17:47:59.703Z"
  }
]
public class Sample {

    public static void main(String[] args) {
        String json = "[{\n" + 
                "   \"appId\": \"MBSP\",\n" + 
                "   \"askPrice\": 0,\n" + 
                "   \"bidPrice\": 0,\n" + 
                "   \"collectionDataSource\": \"ExternalTick\",\n" + 
                "   \"collectionName\": \"FRM_MBS_TBA_FN_15Y_0.03_FWD0\",\n" + 
                "   \"collectionObservationTime\": \"2020-09-21T17:47:59.703Z\",\n" + 
                "   \"collectionType\": \"LIVE\",\n" + 
                "   \"coupon\": 1.03,\n" + 
                "   \"createdBy\": \"Test\",\n" + 
                "   \"createdOn\": \"2020-09-21T17:47:59.703Z\",\n" + 
                "   \"createdOnDate\": 0,\n" + 
                "   \"forward\": 0,\n" + 
                "   \"issuingAgency\": \"FF\",\n" + 
                "   \"lastUpdated\": \"2020-09-21T17:47:59.703Z\",\n" + 
                "   \"lastUpdatedBy\": \"string\",\n" + 
                "   \"lastUpdatedDate\": 0,\n" + 
                "   \"maturity\": 0,\n" + 
                "   \"midPrice\": 0,\n" + 
                "   \"mtaVersionNumber\": 0,\n" + 
                "   \"settlementDate\": \"2020-09-21T17:47:59.703Z\"\n" + 
                "}]";
        JSONArray jsonObj = new JSONArray(json);
        for (int i = 0; i < jsonObj.length(); i++) {
            JSONObject jsonobject = jsonObj.getJSONObject(i);
            double Coupon = jsonobject.getDouble("coupon");
            System.out.println(Coupon);
        }
    }

}
1.03