Java 从文本文件读取json

Java 从文本文件读取json,java,android,json,Java,Android,Json,我试图制作一个从web服务读取json的应用程序,将其保存到一个文件中,然后读取该文件并解析json 保存该文件的原因是,我将读取多个json源,它们都具有相同的布局 代码: public void lesstatusDescription(String sporingsnummer) { InputStream oFile; try { oFile = openFileInput(sporingsnummer + ".json"); InputS

我试图制作一个从web服务读取json的应用程序,将其保存到一个文件中,然后读取该文件并解析json

保存该文件的原因是,我将读取多个json源,它们都具有相同的布局

代码:

public void lesstatusDescription(String sporingsnummer) {
    InputStream oFile;
    try {
        oFile = openFileInput(sporingsnummer + ".json");
        InputStreamReader oReader = new InputStreamReader(oFile);
        BufferedReader oBuffer = new BufferedReader(oReader);
        String sText = "";
        String sEachLine = "";
        while ((sEachLine = oBuffer.readLine()) != null) {
            sText += sEachLine;
        }
        oReader.close();
        final JSONObject object = new JSONObject(sText);
        JSONArray consignmentSet = object.getJSONArray("consignmentSet");
        Integer i = consignmentSet.length();
        TextView tv = (TextView)findViewById(R.id.textView);
        tv.setText(i.toString());

    } catch (Exception ex) {
        //handle exception here
        Toast.makeText(getApplicationContext(),ex.toString(),Toast.LENGTH_SHORT).show();
    }
}
我似乎得到了错误:
org.json.JSONException:java.lang.String类型的值无法转换为JSONObject

编辑: 添加了json文件:

{"consignmentSet":[{"consignmentId":"70300490908546098","previousConsignmentId":"","totalWeightInKgs":0.0,"totalVolumeInDm3":1.2,"packageSet":[{"statusDescription":"","descriptions":[],"packageNumber":"RA608072968SG","previousPackageNumber":"","productName":"REKOMMANDERT BREV FRA UTLANDET","productCode":"2567","brand":"POSTEN","lengthInCm":32,"widthInCm":12,"heightInCm":3,"volumeInDm3":1.2,"weightInKgs":0.0,"dateOfReturn":"03.07.2013","recipientAddress":{"addressLine1":"","addressLine2":"","postalCode":"1458","city":"FJELLSTRAND","countryCode":"NO","country":"Norway"},"eventSet":[{"description":"Sendingen er utlevert","status":"DELIVERED","recipientSignature":{"name":""},"unitId":"171108","unitType":"BRING","postalCode":"1450","city":"NESODDTANGEN","countryCode":"NO","country":"Norway","dateIso":"2013-06-20T15:08:48+02:00","displayDate":"20.06.2013","displayTime":"15:08","consignmentEvent":false},{"description":"Sendingen er ankommet <a title=\"Her finner du Nesoddtangen postkontor\" href=\"https://www.posten.no/kundeservice/postkontor-info-iframe?enhetsnr=171108\" class=\"sporing-lightbox-postoffice\">Nesoddtangen postkontor</a>","status":"READY_FOR_PICKUP","recipientSignature":{"name":""},"unitId":"171108","unitInformationUrl":"http://fraktguide.bring.no/fraktguide/api/pickuppoint/id/171108","unitType":"BRING","postalCode":"1451","city":"NESODDTANGEN","countryCode":"NO","country":"Norway","dateIso":"2013-06-19T08:35:21+02:00","displayDate":"19.06.2013","displayTime":"08:35","consignmentEvent":false},{"description":"Sendingen er ankommet terminal og blir videresendt","status":"IN_TRANSIT","recipientSignature":{"name":""},"unitId":"032850","unitType":"BRING","postalCode":"0024","city":"OSLO","countryCode":"NO","country":"Norway","dateIso":"2013-06-18T16:37:13+02:00","displayDate":"18.06.2013","displayTime":"16:37","consignmentEvent":false,"definitions":[{"term":"terminal","explanation":"Brev, pakke eller godsterminal som benyttes til sortering  og omlasting av sendinger som er underveis til mottaker."}]},{"description":"Sendingen er tollbehandlet og sendes til mottaker.","status":"IN_TRANSIT","recipientSignature":{"name":""},"unitId":"032874","unitType":"BRING","postalCode":"0024","city":"OSLO","countryCode":"NO","country":"Norway","dateIso":"2013-06-18T13:44:56+02:00","displayDate":"18.06.2013","displayTime":"13:44","consignmentEvent":false,"definitions":[{"term":"mottaker","explanation":"En person eller firma som får en sending tilsendt er mottaker. Kalles også adressat. Det vil si den som avsender adresserer sendingen til."}]},{"description":"Sendingen er antatt tollpliktig og er sendt til tollbehandling","status":"CUSTOMS","recipientSignature":{"name":""},"unitId":"100838","unitType":"BRING","postalCode":"1470","city":"LØRENSKOG","countryCode":"NO","country":"Norway","dateIso":"2013-06-17T12:34:28+02:00","displayDate":"17.06.2013","displayTime":"12:34","consignmentEvent":false,"definitions":[{"term":"tollbehandling","explanation":"Bestiller du varer fra utlandet, for eksempel på utenlandske nettsteder, må du fortolle varene. Vi utfører denne tjenesten for deg. \r\nSkal du sende varer utenfor Norges grenser, må sendingene først tollbehandles. Avhengig av vareverdi og innhold kan det kreves at sendingen eksportdeklareres (fortolles)."},{"term":"antatt tollpliktig","explanation":"En sending som antas å ha tollpliktig innhold. Sendingen går videre til tollkontroll. Det betyr ikke nødvendigvis at mottaker må betale toll eller moms, men sendingen blir kontrollert for å avgjøre dette. "}]},{"description":"Sendingen er ankommet mottakerlandet","status":"INTERNATIONAL","recipientSignature":{"name":""},"unitId":"100838","unitType":"BRING","postalCode":"","city":"OSLO LETTER CENTER","countryCode":"NO","country":"Norway","dateIso":"2013-06-17T11:41:48+02:00","displayDate":"17.06.2013","displayTime":"11:41","consignmentEvent":false},{"description":"Sendingen er sendt fra avsenderland","status":"INTERNATIONAL","recipientSignature":{"name":""},"unitId":"032858","unitType":"BRING","postalCode":"","city":"SINGAPORE SØ5","countryCode":"SG","country":"Singapore","dateIso":"2013-06-14T11:22:00+02:00","displayDate":"14.06.2013","displayTime":"11:22","consignmentEvent":false,"definitions":[{"term":"avsenderland","explanation":"Det landet en sendingen er innlevert og sendt ifra."}]},{"description":"Sendingen er ankommet eksportterminal","status":"INTERNATIONAL","recipientSignature":{"name":""},"unitId":"032858","unitType":"BRING","postalCode":"","city":"SINGAPORE SØ5","countryCode":"SG","country":"Singapore","dateIso":"2013-06-13T21:06:00+02:00","displayDate":"13.06.2013","displayTime":"21:06","consignmentEvent":false},{"description":"Sendingen er sendt fra avsenderland","status":"INTERNATIONAL","recipientSignature":{"name":""},"unitId":"032858","unitType":"BRING","postalCode":"","city":"SINGAPORE SØ5","countryCode":"SG","country":"Singapore","dateIso":"2013-06-13T21:06:00+02:00","displayDate":"13.06.2013","displayTime":"21:06","consignmentEvent":false,"definitions":[{"term":"avsenderland","explanation":"Det landet en sendingen er innlevert  og sendt ifra."}]}]}]}]}
{“寄售集”:[{“寄售ID”:“70300490908546098”,“以前的寄售ID”:“TotalWeightInks”:0.0,“totalVolumeInDm3”:1.2,“包装集”:[{“statusDescription”:“descriptions”:“[]”,“包装编号”:“RA608072968SG”,“以前的包装编号”:“产品名称”:“Rekommander BREV FRA UTLANDET”,“产品代码”:“2567”,“品牌”:“POSTEN”,“lengthInCm”:32,“widthInCm”:12,“heightInCm”:3,“volumeInDm3”:1.2,“weightInKgs”:0.0,“返回日期”:“2013年7月3日”,“收件人地址:{“addressLine1”:“addressLine2”:“postalCode”:“1458”,“city”:“FJELLSTRAND”,“countryCode”:“NO”,“country”:“Norway”},“eventSet”:[{“描述”:“Sendinger-utlevert”,“status”:“Delived”,“收件人签名:{“姓名”:“unitId”:“171108”、“单位类型”:“带来”、“邮寄代码”:“1450”、“城市”:“NESODDTANGEN”、“国家代码”:“否”、“国家”:“挪威”、“日期ISO”:“2013-06-20T15:08:48+02:00”、“显示日期”:“20.06.2013”、“显示时间”:“15:08”、“寄售事件”:false}、{“描述”:“寄件人”Ancommet、“状态”:“准备领取”、“收件人签名”:{“姓名”:“}”、“单位”:“171108”UnitInformation URL:“”http://fraktguide.bring.no/fraktguide/api/pickuppoint/id/171108“,”单位类型“:”带来“,”邮政编码“:”1451“,”城市“:”奈索德坦根“,”国家代码“:”否“,”国家“,”挪威“,”日期ISO“:”2013-06-19T08:35:21+02:00“,”显示日期“:”19.06.2013“,”显示时间“:”08:35“,”托运事件“:”假“,”描述“:”寄件人姓名:Ancommet terminal og blir videresendt,状态:运输中,收件人签名:{“姓名:”},“unitId:“032850”,“unitType:“携带”,“邮寄代码:”“0024”,“城市:”“奥斯陆”,“国家代码:”“否”,“国家:”“挪威”,“日期:”“2013-06-18T16:37:13+02:00”,“显示日期:”“2013年6月18日”,“显示时间:”“16:37”,“寄件人事件”:假,“定义”[{“术语”“:”终端“,”解释“:”Brev,pakke eller godsterminal som benyttes直到分拣Ombreant av sendinger som er Underweis直到mottaker。”,”描述“:”Sendingen er tollbehandlet og sendes直到mottaker。”,”状态“:”运输中“,”收件人签名“{”姓名“,”unitId:”032874“,”单位类型“:”带来“,”邮政编码“:”0024“,”城市“:”奥斯陆“,“countryCode:“NO”,“country:“Norway”,“dateIso:“2013-06-18T13:44:56+02:00”,“displayDate:“18.06.2013”,“displayTime:“13:44”,“发货事件”:false,“定义”:[{”术语:“:“mottaker”,“解释”:“En person eller firma som fÃEn sending tiller mottaker.Kalles ogsÃadressat.Det vil si den som avsender adreserer sender adreser tile.”描述:““发送人”或“发送人”或“发送人”或“状态”:“海关”,“收件人签名”:{“姓名”:“},“单位ID”:“100838”,“单位类型”:“带来”,“邮政编码”:“1470”,“城市”:“LÃRENSKOG”,“国家代码”:“否”,“国家”:“挪威”,“日期ISO”:“2013-06-17T12:34:28+02:00”,“显示日期”:“17.06.2013”,“显示时间”:“12:34”,“显示时间”:”委托事件:false,“定义”:[{“术语”:“过路费处理”,“解释”:挪威格伦瑟的瓦雷尔·瓦雷斯滕(deg.\r\nSkal du sende varer tenser,mÃsendinge fÃ184; rst tollbehandles.Avhengig av vareverdi og innhold kan deg kreves at Sendinge Ekdeklareres(fortolles)的瓦雷斯滕(deg kreves)。“{,”“术语”:”安塔特·托尔普利克提格,“解释”:“派遣索姆·安塔斯·托尔普利克提格旅店。派遣gÃÃr维迪尔直到托尔克特拉尔。德特·伊克·德文迪格维斯前往摩塔克mÃÃe toll eller moms,派遣blir Kontrollet前往阿夫格·雷德。”},{“描述”:“派遣安科米特mottakerlandet”,状态:“国际”收件人签名:“{”姓名:“}”,unitId:“100838”,“unitType:“带来”,“邮递代码:“,”城市:“,”奥斯陆信件中心“,”国家代码“,”否“,”国家“,”挪威“,”日期ISO“,”2013-06-17T11:41:48+02:00”,“显示日期“:”2013年6月17日“,”显示时间“,”11:41“,”寄售事件“:”假“,{”描述“:”寄件人:寄件人:挪威“,”状态“,”国际“,”收件人签名:“{”姓名:“}”,unitId:“032858”,“unitType:“带来”,“邮寄代码:“,”城市:“,”新加坡SÃ5”,“国家代码:“,”SG”,“国家:“,”新加坡“,”日期ISO:“2013-06-14T11:22:00+02:00”,“显示日期:“:”14.06.2013”,“显示时间:“,”11:22”,“寄售事件:”假,“定义:“[{”术语:“:”avsenderland”,“解释:”Det landet en sendingen er Innlever og sendt ifra.,{“描述”:“sendingen er Ancommet eksportterminal”,“状态”:“国际”,“收件人签名”:{“姓名”:“},“unitId”:“032858”,“unitType”:“带来”,“邮递代码”:“城市”:“新加坡SÃ5”,“国家代码”:“SG”,“国家”:“新加坡”,“日期ISO”:“2013-06-13T21:06:00+02:00”,“显示日期”:2013年6月13日,“显示时间”:“21:06”,“寄售事件”:false},{“描述”:“寄件人”或“寄件人”或“寄件人”签名:{“姓名”:“}”,unitId:“032858”,“unitType:“带来”,“邮寄代码”:“城市”:“新加坡SÃ5”,“国家代码”:“SG”,“国家”:“新加坡”,“日期ISO:“2013-06-13T21:06:00+02:00”,“显示日期”:2013年6月13日,“显示时间”:“21:06”,“发货事件”:假,“定义”:[{“术语”:“avsenderland”,“解释”:“Det landet en sendingen er innlevert og sendt ifra.”

我做错了什么?

我也遇到了类似的问题。记录并检查从JSON中得到的信息。如果JSON无效,则无法修复文件,但如果JSON有效,请尝试如下更改行:(递增并尝试直到子字符串(5))


我也遇到了类似的问题。记录并检查从JSON中得到的信息。如果JSON无效,则修复文件无效,但如果JSON有效,请尝试如下更改行:(递增并尝试直到子字符串(5))


你的短信不适合你
final JSONObject object = new JSONObject(sText.substring(1));