2013-03-07 66 views
0

我有一个简单的解析器来从Web Api服务获取JSON数据。Web Api上的Android REST请求,JSON响应被分块

public JSONArray getJSONArrayFromUrl(String url) { 
     InputStream is = null; 
     JSONArray jObj = null; 
     String json = ""; 
     // Making HTTP request 
     try { 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet(url); 

      HttpResponse httpResponse = httpClient.execute(httpGet); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1")); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       //json += line; 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONArray(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jObj; 

    } 

它的工作原理,但我的问题是,当数据稍大,他们得到大块! 当内容较小时,一切工作正常,但以其他方式,我得到“没有任何价值”的异常。

我用的Restlet查询REST的Web API服务和例外是

Unterminated array at character 13 of [application/json,UTF-8] 

我发现有关内容的长度有一定的问题,在IIS中,但无法找到或理解任何sollutions的,有人能帮助,我绝对认为这不是客户的问题,但我认为我应该关注服务器端!

[编辑]

的JSON我应该得到:

[ 
{ 
$id: "1", 
ExamId: 1, 
Title: "Agile Part Two", 
ClassId: 1, 
Description: "Agile Development 202", 
Details: "What is Agile software Development? I explain agile with one dozen words: Iterative planning, honest plans, project heartbeat, working software, team ...", 
TotalTime: "03:00:00", 
RowVersion: "AAAAAAAAD6M=", 
Class: null, 
Questions: [ 
{ 
$id: "2", 
QuestionId: 1, 
ExamId: 1, 
Question1: "You are a coach facilitating retrospective meeting. What is the main purpose of this meeting that facilitator need to ensure during the meeting?", 
TimeAverage: "00:10:00", 
RowVersion: "AAAAAAAAD6Q=", 
Choices: [ 
{ 
$id: "3", 
ChoiceId: 1, 
QuestionId: 1, 
Choice1: "Peer pressure, Fine-grain coordination, Focusing on the few, Daily commitment and Raising impediments.", 
IsCorrect: true, 
Points: 12, 
RowVersion: "AAAAAAAAD64=", 
Question: { 
$ref: "2" 
} 
}, 
{ 
$id: "4", 
ChoiceId: 2, 
QuestionId: 1, 
Choice1: "Know the work, Get a fresh start, Commit to shared goals and Create focus and abundance.", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7g=", 
Question: { 
$ref: "2" 
} 
}, 
{ 
$id: "5", 
ChoiceId: 3, 
QuestionId: 1, 
Choice1: "True-up, Show and tell, Get direct feedback, Offer insights and Ask for help.", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7c=", 
Question: { 
$ref: "2" 
} 
}, 
{ 
$id: "6", 
ChoiceId: 5, 
QuestionId: 1, 
Choice1: "Inspect and adapt. Look back at how, not what Do (even) better next time.", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7Y=", 
Question: { 
$ref: "2" 
} 
} 
], 
Exam: { 
$ref: "1" 
} 
}, 
{ 
$id: "7", 
QuestionId: 2, 
ExamId: 1, 
Question1: "How does tools like FIT and Fitness compliment Agile?", 
TimeAverage: "00:10:00", 
RowVersion: "AAAAAAAAD6Y=", 
Choices: [ 
{ 
$id: "8", 
ChoiceId: 6, 
QuestionId: 2, 
Choice1: "Automated Acceptance Tests", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7U=", 
Question: { 
$ref: "7" 
} 
}, 
{ 
$id: "9", 
ChoiceId: 7, 
QuestionId: 2, 
Choice1: "Continuous Integration", 
IsCorrect: true, 
Points: 15, 
RowVersion: "AAAAAAAAD7Q=", 
Question: { 
$ref: "7" 
} 
}, 
{ 
$id: "10", 
ChoiceId: 8, 
QuestionId: 2, 
Choice1: "Unit Test", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7k=", 
Question: { 
$ref: "7" 
} 
}, 
{ 
$id: "11", 
ChoiceId: 9, 
QuestionId: 2, 
Choice1: "Code coverage metrics", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7o=", 
Question: { 
$ref: "7" 
} 
} 
], 
Exam: { 
$ref: "1" 
} 
}, 
{ 
$id: "12", 
QuestionId: 3, 
ExamId: 1, 
Question1: "What does "Timeboxed" means in Agile terms?", 
TimeAverage: "00:05:00", 
RowVersion: "AAAAAAAAD6g=", 
Choices: [ 
{ 
$id: "13", 
ChoiceId: 10, 
QuestionId: 3, 
Choice1: "Fast", 
IsCorrect: true, 
Points: 13, 
RowVersion: "AAAAAAAAD7s=", 
Question: { 
$ref: "12" 
} 
}, 
{ 
$id: "14", 
ChoiceId: 11, 
QuestionId: 3, 
Choice1: "Flexible", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD7w=", 
Question: { 
$ref: "12" 
} 
}, 
{ 
$id: "15", 
ChoiceId: 12, 
QuestionId: 3, 
Choice1: "Frequent", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD70=", 
Question: { 
$ref: "12" 
} 
}, 
{ 
$id: "16", 
ChoiceId: 13, 
QuestionId: 3, 
Choice1: "Fixed", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD74=", 
Question: { 
$ref: "12" 
} 
} 
], 
Exam: { 
$ref: "1" 
} 
}, 
{ 
$id: "17", 
QuestionId: 4, 
ExamId: 1, 
Question1: "How are EVM metrics used in Agile?", 
TimeAverage: "00:15:00", 
RowVersion: "AAAAAAAAD6o=", 
Choices: [ 
{ 
$id: "18", 
ChoiceId: 14, 
QuestionId: 4, 
Choice1: "They are used to prioritize projects.", 
IsCorrect: true, 
Points: 22, 
RowVersion: "AAAAAAAAD78=", 
Question: { 
$ref: "17" 
} 
}, 
{ 
$id: "19", 
ChoiceId: 15, 
QuestionId: 4, 
Choice1: "They are used to monitor project performance", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD8A=", 
Question: { 
$ref: "17" 
} 
}, 
{ 
$id: "20", 
ChoiceId: 16, 
QuestionId: 4, 
Choice1: "They are used to analyze risk.", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD8E=", 
Question: { 
$ref: "17" 
} 
}, 
{ 
$id: "21", 
ChoiceId: 17, 
QuestionId: 4, 
Choice1: "They are used to measure coach's performance.", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD8I=", 
Question: { 
$ref: "17" 
} 
} 
], 
Exam: { 
$ref: "1" 
} 
}, 
{ 
$id: "22", 
QuestionId: 5, 
ExamId: 1, 
Question1: "If a team can complete 10 story points in an iteration then how long will it take for the team to complete 100 story points?", 
TimeAverage: "00:12:00", 
RowVersion: "AAAAAAAAD6w=", 
Choices: [ 
{ 
$id: "23", 
ChoiceId: 19, 
QuestionId: 5, 
Choice1: "10 Iterations", 
IsCorrect: true, 
Points: 11, 
RowVersion: "AAAAAAAAD8Q=", 
Question: { 
$ref: "22" 
} 
}, 
{ 
$id: "24", 
ChoiceId: 20, 
QuestionId: 5, 
Choice1: "10 waves", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD8U=", 
Question: { 
$ref: "22" 
} 
}, 
{ 
$id: "25", 
ChoiceId: 21, 
QuestionId: 5, 
Choice1: "20 Iterations", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD8Y=", 
Question: { 
$ref: "22" 
} 
}, 
{ 
$id: "26", 
ChoiceId: 23, 
QuestionId: 5, 
Choice1: "20 waves", 
IsCorrect: false, 
Points: 0, 
RowVersion: "AAAAAAAAD8g=", 
Question: { 
$ref: "22" 
} 
} 
], 
Exam: { 
$ref: "1" 
} 
} 
], 
Schedule: { 
$id: "27", 
ScheduleId: 1, 
DateScheduled: "2013-03-06T00:00:00", 
RowVersion: "AAAAAAAAD8k=", 
Exam: { 
$ref: "1" 
} 
} 
} 
] 

的JSON我得到:

[{"ClassId":1,"Description":"Agile Development 202","Schedule":{"RowVersion":"AAAAAAAAD8k=","Exam":{"$ref":"1"},"DateScheduled":"2013-03-06T00:00:00","ScheduleId":1,"$id":"27"},"Questions":[{"Exam":{"$ref":"1"},"RowVersion":"AAAAAAAAD6Q=","Choices":[{"Question":{"$ref":"2"},"RowVersion":"AAAAAAAAD64=","QuestionId":1,"IsCorrect":true,"ChoiceId":1,"Points":12,"$id":"3","Choice1":"Peer pressure, Fine-grain coordination, Focusing on the few, Daily commitment and Raising impediments."},{"Question":{"$ref":"2"},"RowVersion":"AAAAAAAAD7g=","QuestionId":1,"IsCorrect":false,"ChoiceId":2,"Points":0,"$id":"4","Choice1":"Know the work, Get a fresh start, Commit to shared goals and Create focus and abundance."},{"Question":{"$ref":"2"},"RowVersion":"AAAAAAAAD7c=","QuestionId":1,"IsCorrect":false,"ChoiceId":3,"Points":0,"$id":"5","Choice1":"True-up, Show and tell, Get direct feedback, Offer insights and Ask for help."},{"Question":{"$ref":"2"},"RowVersion":"AAAAAAAAD7Y=","QuestionId":1,"IsCorrect":false,"ChoiceId":5,"Points":0,"$id":"6","Choice1":"Inspect and adapt. Look back at how, not what\r\nDo (even) better next time."}],"QuestionId":1,"TimeAverage":"00:10:00","ExamId":1,"Question1":"You are a coach facilitating retrospective meeting. What is the main purpose of this meeting that facilitator need to ensure during the meeting?","$id":"2"},{"Exam":{"$ref":"1"},"RowVersion":"AAAAAAAAD6Y=","Choices":[{"Question":{"$ref":"7"},"RowVersion":"AAAAAAAAD7U=","QuestionId":2,"IsCorrect":false,"ChoiceId":6,"Points":0,"$id":"8","Choice1":"Automated Acceptance Tests"},{"Question":{"$ref":"7"},"RowVersion":"AAAAAAAAD7Q=","QuestionId":2,"IsCorrect":true,"ChoiceId":7,"Points":15,"$id":"9","Choice1":"Continuous Integration"},{"Question":{"$ref":"7"},"RowVersion":"AAAAAAAAD7k=","QuestionId":2,"IsCorrect":false,"ChoiceId":8,"Points":0,"$id":"10","Choice1":"Unit Test"},{"Question":{"$ref":"7"},"RowVersion":"AAAAAAAAD7o=","QuestionId":2,"IsCorrect":false,"ChoiceId":9,"Points":0,"$id":"11","Choice1":"Code coverage metrics"}],"QuestionId":2,"TimeAverage":"00:10:00","ExamId":1,"Question1":"How does tools like FIT and Fitness compliment Agile?","$id":"7"},{"Exam":{"$ref":"1"},"RowVersion":"AAAAAAAAD6g=","Choices":[{"Question":{"$ref":"12"},"RowVersion":"AAAAAAAAD7s=","QuestionId":3,"IsCorrect":true,"ChoiceId":10,"Points":13,"$id":"13","Choice1":"Fast"},{"Question":{"$ref":"12"},"RowVersion":"AAAAAAAAD7w=","QuestionId":3,"IsCorrect":false,"ChoiceId":11,"Points":0,"$id":"14","Choice1":"Flexible"},{"Question":{"$ref":"12"},"RowVersion":"AAAAAAAAD70=","QuestionId":3,"IsCorrect":false,"ChoiceId":12,"Points":0,"$id":"15","Choice1":"Frequent"},{"Question":{"$ref":"12"},"RowVersion":"AAAAAAAAD74=","QuestionId":3,"IsCorrect":false,"ChoiceId":13,"Points":0,"$id":"16","Choice1":"Fixed"}],"QuestionId":3,"TimeAverage":"00:05:00","ExamId":1,"Question1":"What does \"Timeboxed\" means in Agile terms?","$id":"12"},{"Exam":{"$ref":"1"},"RowVersion":"AAAAAAAAD6o=","Choices":[{"Question":{"$ref":"17"},"RowVersion":"AAAAAAAAD78=","QuestionId":4,"IsCorrect":true,"ChoiceId":14,"Points":22,"$id":"18","Choice1":"They are used to prioritize projects."},{"Question":{"$ref":"17"},"RowVersion":"AAAAAAAAD8A=","QuestionId":4,"IsCorrect":false,"ChoiceId":15,"Points":0,"$id":"19","Choice1":"They are used to monitor project performance"},{"Question":{"$ref":"17"},"RowVersion":"AAAAAAAAD8E=","QuestionId":4,"IsCorrect":false,"ChoiceId":16,"Points":0,"$id":"20","Choice1":"They are used to analyze risk."},{"Question":{"$ref":"17"},"RowVersion":"AAAAAAAAD8I=","QuestionId":4,"IsCorrect":false,"ChoiceId":17,"Points":0,"$id":"21","Choice1":"They are used to measure coach's performance."}],"QuestionId":4,"TimeAverage":"00:15:00","ExamId":1,"Question1":"How are EVM metrics used in Agile?","$id":"17"},{"Exam":{"$ref":"1"},"RowVersion":"AAAAAAAAD6w=","Choices":[{"Question":{"$ref":"22"},"RowVersion":"AAAAAAAAD8Q=","QuestionId":5,"IsCorrect":true,"ChoiceId":19,"Points":11,"$id":"23","Choice1":"10 Iterations"},{"Question":{"$ref":"22"},"RowVersion":"AAA 

预先感谢您。

+0

如果可能的话,你可以分享你的json数组响应吗? – Siddhesh 2013-03-07 13:59:51

+0

用你的请求编辑这个问题 – 2013-03-07 14:14:34

回答

0
[ 
    { 
     "ClassId": 1, 
     "Description": "Agile Development 202", 
     "Schedule": { 
      "RowVersion": "AAAAAAAAD8k=", 
      "Exam": { 
       "$ref": "1" 
      }, 
      "DateScheduled": "2013-03-06T00:00:00", 
      "ScheduleId": 1, 
      "$id": "27" 
     }, 
     "Questions": [ 
      { 
       "Exam": { 
        "$ref": "1" 
       }, 
       "RowVersion": "AAAAAAAAD6Q=", 
       "Choices": [ 
        { 
         "Question": { 
          "$ref": "2" 
         }, 
         "RowVersion": "AAAAAAAAD64=", 
         "QuestionId": 1, 
         "IsCorrect": true, 
         "ChoiceId": 1, 
         "Points": 12, 
         "$id": "3", 
         "Choice1": "Peer pressure, Fine-grain coordination, Focusing on the few, Daily commitment and Raising impediments." 
        }, 
        { 
         "Question": { 
          "$ref": "2" 
         }, 
         "RowVersion": "AAAAAAAAD7g=", 
         "QuestionId": 1, 
         "IsCorrect": false, 
         "ChoiceId": 2, 
         "Points": 0, 
         "$id": "4", 
         "Choice1": "Know the work, Get a fresh start, Commit to shared goals and Create focus and abundance." 
        }, 
        { 
         "Question": { 
          "$ref": "2" 
         }, 
         "RowVersion": "AAAAAAAAD7c=", 
         "QuestionId": 1, 
         "IsCorrect": false, 
         "ChoiceId": 3, 
         "Points": 0, 
         "$id": "5", 
         "Choice1": "True-up, Show and tell, Get direct feedback, Offer insights and Ask for help." 
        }, 
        { 
         "Question": { 
          "$ref": "2" 
         }, 
         "RowVersion": "AAAAAAAAD7Y=", 
         "QuestionId": 1, 
         "IsCorrect": false, 
         "ChoiceId": 5, 
         "Points": 0, 
         "$id": "6", 
         "Choice1": "Inspect and adapt. Look back at how, not what\r\nDo (even) better next time." 
        } 
       ], 
       "QuestionId": 1, 
       "TimeAverage": "00:10:00", 
       "ExamId": 1, 
       "Question1": "You are a coach facilitating retrospective meeting. What is the main purpose of this meeting that facilitator need to ensure during the meeting?", 
       "$id": "2" 
      }, 
      { 
       "Exam": { 
        "$ref": "1" 
       }, 
       "RowVersion": "AAAAAAAAD6Y=", 
       "Choices": [ 
        { 
         "Question": { 
          "$ref": "7" 
         }, 
         "RowVersion": "AAAAAAAAD7U=", 
         "QuestionId": 2, 
         "IsCorrect": false, 
         "ChoiceId": 6, 
         "Points": 0, 
         "$id": "8", 
         "Choice1": "Automated Acceptance Tests" 
        }, 
        { 
         "Question": { 
          "$ref": "7" 
         }, 
         "RowVersion": "AAAAAAAAD7Q=", 
         "QuestionId": 2, 
         "IsCorrect": true, 
         "ChoiceId": 7, 
         "Points": 15, 
         "$id": "9", 
         "Choice1": "Continuous Integration" 
        }, 
        { 
         "Question": { 
          "$ref": "7" 
         }, 
         "RowVersion": "AAAAAAAAD7k=", 
         "QuestionId": 2, 
         "IsCorrect": false, 
         "ChoiceId": 8, 
         "Points": 0, 
         "$id": "10", 
         "Choice1": "Unit Test" 
        }, 
        { 
         "Question": { 
          "$ref": "7" 
         }, 
         "RowVersion": "AAAAAAAAD7o=", 
         "QuestionId": 2, 
         "IsCorrect": false, 
         "ChoiceId": 9, 
         "Points": 0, 
         "$id": "11", 
         "Choice1": "Code coverage metrics" 
        } 
       ], 
       "QuestionId": 2, 
       "TimeAverage": "00:10:00", 
       "ExamId": 1, 
       "Question1": "How does tools like FIT and Fitness compliment Agile?", 
       "$id": "7" 
      }, 
      { 
       "Exam": { 
        "$ref": "1" 
       }, 
       "RowVersion": "AAAAAAAAD6g=", 
       "Choices": [ 
        { 
         "Question": { 
          "$ref": "12" 
         }, 
         "RowVersion": "AAAAAAAAD7s=", 
         "QuestionId": 3, 
         "IsCorrect": true, 
         "ChoiceId": 10, 
         "Points": 13, 
         "$id": "13", 
         "Choice1": "Fast" 
        }, 
        { 
         "Question": { 
          "$ref": "12" 
         }, 
         "RowVersion": "AAAAAAAAD7w=", 
         "QuestionId": 3, 
         "IsCorrect": false, 
         "ChoiceId": 11, 
         "Points": 0, 
         "$id": "14", 
         "Choice1": "Flexible" 
        }, 
        { 
         "Question": { 
          "$ref": "12" 
         }, 
         "RowVersion": "AAAAAAAAD70=", 
         "QuestionId": 3, 
         "IsCorrect": false, 
         "ChoiceId": 12, 
         "Points": 0, 
         "$id": "15", 
         "Choice1": "Frequent" 
        }, 
        { 
         "Question": { 
          "$ref": "12" 
         }, 
         "RowVersion": "AAAAAAAAD74=", 
         "QuestionId": 3, 
         "IsCorrect": false, 
         "ChoiceId": 13, 
         "Points": 0, 
         "$id": "16", 
         "Choice1": "Fixed" 
        } 
       ], 
       "QuestionId": 3, 
       "TimeAverage": "00:05:00", 
       "ExamId": 1, 
       "Question1": "What does \"Timeboxed\" means in Agile terms?", 
       "$id": "12" 
      }, 
      { 
       "Exam": { 
        "$ref": "1" 
       }, 
       "RowVersion": "AAAAAAAAD6o=", 
       "Choices": [ 
        { 
         "Question": { 
          "$ref": "17" 
         }, 
         "RowVersion": "AAAAAAAAD78=", 
         "QuestionId": 4, 
         "IsCorrect": true, 
         "ChoiceId": 14, 
         "Points": 22, 
         "$id": "18", 
         "Choice1": "They are used to prioritize projects." 
        }, 
        { 
         "Question": { 
          "$ref": "17" 
         }, 
         "RowVersion": "AAAAAAAAD8A=", 
         "QuestionId": 4, 
         "IsCorrect": false, 
         "ChoiceId": 15, 
         "Points": 0, 
         "$id": "19", 
         "Choice1": "They are used to monitor project performance" 
        }, 
        { 
         "Question": { 
          "$ref": "17" 
         }, 
         "RowVersion": "AAAAAAAAD8E=", 
         "QuestionId": 4, 
         "IsCorrect": false, 
         "ChoiceId": 16, 
         "Points": 0, 
         "$id": "20", 
         "Choice1": "They are used to analyze risk." 
        }, 
        { 
         "Question": { 
          "$ref": "17" 
         }, 
         "RowVersion": "AAAAAAAAD8I=", 
         "QuestionId": 4, 
         "IsCorrect": false, 
         "ChoiceId": 17, 
         "Points": 0, 
         "$id": "21", 
         "Choice1": "They are used to measure coach's performance." 
        } 
       ], 
       "QuestionId": 4, 
       "TimeAverage": "00:15:00", 
       "ExamId": 1, 
       "Question1": "How are EVM metrics used in Agile?", 
       "$id": "17" 
      }, 
      { 
       "Exam": { 
        "$ref": "1" 
       }, 
       "RowVersion": "AAAAAAAAD6w=", 
       "Choices": [ 
        { 
         "Question": { 
          "$ref": "22" 
         }, 
         "RowVersion": "AAAAAAAAD8Q=", 
         "QuestionId": 5, 
         "IsCorrect": true, 
         "ChoiceId": 19, 
         "Points": 11, 
         "$id": "23", 
         "Choice1": "10 Iterations" 
        }, 
        { 
         "Question": { 
          "$ref": "22" 
         }, 
         "RowVersion": "AAA 

,我可以看到你的JSON没有正确格式化你的阵列不是封闭的,这样你就得到错误Unterminated array

+0

我知道这是我的问题,但是如果你比较两个JSON数据对彼此是如此的无关紧要,而且这不应该发生....我使用Web Api,而我不知道为什么这样表现....在客户端/服务器上的任何想法? – 2013-03-07 14:19:34

0

解决问题与地停止分块编码。

看到详细内容answer