循环解析JSON以查找字符串匹配(由以下原因引起:java.lang.NegativeArraySizeException:-1)
我正在创建一个应用程序,用户在其中将一个名称放入EditText。然后在循环中使用此文本,以查看解析的JSON数据中是否存在任何匹配项。如果存在匹配项,则该匹配项将添加到ArrayList中。然后将此数组列表调整为listview循环解析JSON以查找字符串匹配(由以下原因引起:java.lang.NegativeArraySizeException:-1),java,android,arrays,json,sorting,Java,Android,Arrays,Json,Sorting,我正在创建一个应用程序,用户在其中将一个名称放入EditText。然后在循环中使用此文本,以查看解析的JSON数据中是否存在任何匹配项。如果存在匹配项,则该匹配项将添加到ArrayList中。然后将此数组列表调整为listview private void handleJsonNameResponse() { if (mNameArray == null) { // TODO: handle error } else { try {
private void handleJsonNameResponse() {
if (mNameArray == null) {
// TODO: handle error
} else {
try {
ArrayList<HashMap<String, String>> namePosts = new ArrayList<HashMap<String, String>>();
HashMap<String , String> namesAndCreatedHash = new HashMap<String, String>();
for (int i = 0; i < mNameArray.length(); i++) {
JSONObject namePost = mNameArray.getJSONObject(i);
String name = namePost.getString(KEY_CONTENT);
name = Html.fromHtml(name).toString();
String created = namePost.getString(KEY_CREATED_AT);
created = Html.fromHtml(created).toString();
if ( name == mName ) {
namesAndCreatedHash.put(KEY_CONTENT, name);
namesAndCreatedHash.put(KEY_CREATED_AT, created);
namePosts.add(namesAndCreatedHash);
}
}
String[] keys = { KEY_CONTENT , KEY_CREATED_AT};
int[] ids = {android.R.id.text1 , android.R.id.text2};
SimpleAdapter adapter = new SimpleAdapter(NameListActivity.this , namePosts, android.R.layout.simple_list_item_2,
keys ,ids);
setListAdapter(adapter);
}catch(JSONException e){
e.printStackTrace();
}
}
}
在这个片段中
int contentLength = connection.getContentLength();
char[] charArray = new char[contentLength];
reader.read(charArray);
String responseData = new String(charArray);
您正在使用content length的返回值来分配一个字节数组,在本例中,它返回-1,从而导致异常。一个可能的解决方案:
StringBuilder builder = new StringBuilder();
byte[] array = new byte[8092];
int read = 0;
while ((read = inputStream.read(array)) != -1) {
builder.append(new String(array, 0, read));
}
jsonResponse = new JSONArray(builder.toString());
StringBuilder=新的StringBuilder();字节[]数组=新字节[8092];int read=0;而((read=is.read(array))!=-1{builder.append(新字符串(数组,0,read));}jsonResponse=newjsonarray(builder.toString());“是”现在给了我一个问题。。。它表示无法解析符号is
is
它是输入流
。很抱歉打扰你,但我是新来的,已经为此工作了好几天。。。你看到我的代码有什么问题吗?
int contentLength = connection.getContentLength();
char[] charArray = new char[contentLength];
reader.read(charArray);
String responseData = new String(charArray);
StringBuilder builder = new StringBuilder();
byte[] array = new byte[8092];
int read = 0;
while ((read = inputStream.read(array)) != -1) {
builder.append(new String(array, 0, read));
}
jsonResponse = new JSONArray(builder.toString());