Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环解析JSON以查找字符串匹配(由以下原因引起:java.lang.NegativeArraySizeException:-1)_Java_Android_Arrays_Json_Sorting - Fatal编程技术网

循环解析JSON以查找字符串匹配(由以下原因引起:java.lang.NegativeArraySizeException:-1)

循环解析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 {

我正在创建一个应用程序,用户在其中将一个名称放入EditText。然后在循环中使用此文本,以查看解析的JSON数据中是否存在任何匹配项。如果存在匹配项,则该匹配项将添加到ArrayList中。然后将此数组列表调整为listview

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());