2013-07-30 2 views
0

웹 서비스에서 json을 읽는 앱을 만들려고합니다. 파일에 저장 한 다음 파일을 읽고 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: Value The of type java.lang.String cannot be converted to 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."}]}]}]}]} 

?

+0

마지막'sText'를 확인하십시오. 적절한 JSON 형식이 아닐 수도 있습니다. – Rajeev

+1

JSON 파일의 내용이 올바르지 않은 것 같습니다. JSON 파일을 제공 할 수 있습니까? –

+0

JSON 파일을 제공했습니다. 이제 갑자기 NullPointerException이 발생합니다. – Dukes

답변

2

비슷한 문제가있었습니다. JSON에서 얻은 정보를 기록하고 확인하십시오. 당신의 JSON이 유효하지 않은 경우, 그냥 작동 파일을 수정하지만 JSON이 유효한 경우,이처럼 라인을 변경하려고하지 않습니다 (증가 및 (5) 문자열까지 시도)

final JSONObject object = new JSONObject(sText.substring(1)); 
+0

그래서 저는 절름발이입니다. – Ercan

0

귀하의 Te xt와는 JSON 형식이 올바르지 않습니다. 구문 분석 전에 유효성을 검사하십시오.

+0

대답이 아닌 주석이 될까요? –

1

아마도 sText 변수가 JSON 문자열을 유효하지 않게하는 문자를 추가하고 있습니다. sText를 인쇄하고 http://jsonformatter.curiousconcept.com에서 확인하십시오.

+0

중복 된 키가 있는지 확인하십시오. – Ritesh

관련 문제