Java 无法将字符串强制转换为JSONObject

Java 无法将字符串强制转换为JSONObject,java,android,json,parse-platform,logcat,Java,Android,Json,Parse Platform,Logcat,我在列表和解析方面遇到了一个奇怪的错误,我无法理解。每当我尝试对解析请求进行查询和find()时,有时会得到java.lang.String无法转换为org.json.JSONObject错误 当我进入代码的这一部分时,就会发生这种情况: private List<ParseUser> users; ...... else if (viewStatus == 2) { Log.d("Friends view", "getting current

我在列表和解析方面遇到了一个奇怪的错误,我无法理解。每当我尝试对解析请求进行查询和
find()
时,有时会得到
java.lang.String无法转换为org.json.JSONObject
错误

当我进入代码的这一部分时,就会发生这种情况:

private List<ParseUser> users; 

......
else if (viewStatus == 2) {

                Log.d("Friends view", "getting current user");
                ParseUser current = ParseUser.getCurrentUser();

                Log.d("Friends view", "Getting friend relation of user");
                ParseRelation <ParseUser> friendRelation = current.getRelation("friends");

                Log.d("Friends view", "Getting relation query");
                ParseQuery <ParseUser> queryFriends =  friendRelation.getQuery();

                Log.d("Friends view", "Getting friend query");
                try {
                    users =  queryFriends.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }
                Log.d("Friends view", "users = query done");

            }
AddFriends.java:

public class AddFriends extends ListActivity {
    //Global variables
    public static final int ADD_ID = Menu.FIRST;
    public static final int REQUESTS_ID = Menu.FIRST + 1;
    public static final int FRIENDS_ID = Menu.FIRST + 2;
    public static final int DELETE_ID = Menu.FIRST + 3;

    public TextView title;
    public static int viewStatus = 0;

    private List<ParseUser> users;
    private List<ParseObject> requests;

    Button btnAdd, btnRequests, btnFriends;

    //Grabbing users and putting them in the list
    private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
        protected Void doInBackground(Void... params) {

            if (users != null){
                users = null;
            }

            //add friends view
            if (viewStatus == 0 ) {
                ParseQuery<ParseUser> queryUsers = new ParseQuery<ParseUser>("_User");
                queryUsers.orderByDescending("createdAt");
                queryUsers.whereNotEqualTo("username", ParseUser.getCurrentUser().getUsername());

                try {
                    users = queryUsers.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }


            }
            //show requests
            else if (viewStatus == 1) {

                //grab requests only
                ParseQuery<ParseObject> queryRequests = new ParseQuery<ParseObject>("FriendRequests");
                queryRequests.whereEqualTo("to", ParseUser.getCurrentUser());
                queryRequests.whereEqualTo("status", "waiting");

                try {
                    requests = queryRequests.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }


            }
            //View friends
            else if (viewStatus == 2) {

                Log.d("Friends view", "getting current user");
                ParseUser current = ParseUser.getCurrentUser();

                Log.d("Friends view", "Getting friend relation of user");
                ParseRelation <ParseUser> friendRelation = current.getRelation("friends");

                Log.d("Friends view", "Getting relation query");
                ParseQuery <ParseUser> queryFriends =  friendRelation.getQuery();

                Log.d("Friends view", "Getting friend query");
                try {
                    users =  queryFriends.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }
                Log.d("Friends view", "users = query done");

            }
            return null;
        }

        //before execution
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        //while executing
        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(Void result) {
            //puts users into list view
            ArrayAdapter<String> adapter = new ArrayAdapter<String> (AddFriends.this, R.layout.friends_row);


            if (users != null && viewStatus != 1) {
                for (ParseUser user : users){
                    adapter.add((String) user.get("username"));
                }
            }
            //because requests come in as a parseObject instead of a ParseUser
            else if (viewStatus == 1 && requests != null){
                for (ParseObject request : requests){
                    adapter.add(request.getParseUser("from").getUsername());
                }
            }
            Log.d("View", "Done, setting list adapter..");


            setListAdapter(adapter);


        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friends);


        title = (TextView) findViewById(R.id.friendsTitle);
        title.setText("Send a friend request to one of the following:");

        new RemoteDataTask().execute();
        registerForContextMenu(getListView());

        //Add a friend
        btnAdd = (Button) findViewById(R.id.button);
        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setText("Send a friend request to one of the following:");
                viewStatus = 0;
                new RemoteDataTask().execute();
                registerForContextMenu(getListView());
            }
        });

        //View friend requests button
        btnRequests = (Button) findViewById(R.id.button2);
        btnRequests.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setText("Tap to accept request, hold to deny");
                viewStatus = 1;
                new RemoteDataTask().execute();
                registerForContextMenu(getListView());
            }
        });

        //Friends button
        btnFriends = (Button) findViewById(R.id.button3);
        btnFriends.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setText("Your friends. Hold to delete them");
                viewStatus = 2;
                new RemoteDataTask().execute();
                registerForContextMenu(getListView());
            }
        });


    }

.....
公共类AddFriends扩展ListActivity{
//全局变量
公共静态最终int ADD_ID=Menu.FIRST;
公共静态最终整数请求\u ID=Menu.FIRST+1;
public static final int FRIENDS\u ID=Menu.FIRST+2;
公共静态最终int DELETE_ID=Menu.FIRST+3;
公共文本视图标题;
公共静态int viewStatus=0;
私人名单用户;
私人名单请求;
按钮btnAdd、btnRequests、btnFriends;
//抓住用户并将其放入列表
私有类RemoteDataTask扩展了AsyncTask{
受保护的Void doInBackground(Void…参数){
如果(用户!=null){
users=null;
}
//添加好友视图
如果(viewStatus==0){
ParseQuery queryUsers=新的ParseQuery(“用户”);
queryUsers.orderByDescending(“createdAt”);
queryUsers.whereNotEqualTo(“用户名”,ParseUser.getCurrentUser().getUsername());
试一试{
users=queryUsers.find();
}捕获(解析异常){
Log.e(“查询者”,“错误:+e”);
}
}
//显示请求
else if(viewStatus==1){
//仅抓取请求
ParseQuery queryRequests=新的ParseQuery(“FriendRequests”);
queryRequests.whereEqualTo(“to”,ParseUser.getCurrentUser());
queryRequests.whereEqualTo(“状态”、“等待”);
试一试{
requests=queryRequests.find();
}捕获(解析异常){
Log.e(“查询者”,“错误:+e”);
}
}
//查看朋友
else if(viewStatus==2){
Log.d(“好友视图”,“获取当前用户”);
ParseUser current=ParseUser.getCurrentUser();
Log.d(“好友查看”、“获取用户好友关系”);
ParseRelation-friendRelation=current.getRelation(“朋友”);
Log.d(“好友查看”、“获取关系查询”);
ParseQuery queryFriends=friendRelation.getQuery();
Log.d(“好友查看”、“获取好友查询”);
试一试{
users=queryFriends.find();
}捕获(解析异常){
Log.e(“查询者”,“错误:+e”);
}
Log.d(“好友视图”,“用户=查询完成”);
}
返回null;
}
//行刑前
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
//执行时
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(void结果){
//将用户放入列表视图
ArrayAdapter=新的ArrayAdapter(AddFriends.this,R.layout.friends\u行);
if(users!=null&&viewStatus!=1){
for(解析用户:用户){
add((字符串)user.get(“用户名”);
}
}
//因为请求是作为parseObject而不是ParseUser传入的
else if(viewStatus==1&&requests!=null){
for(ParseObject请求:请求){
add(request.getParseUser(“from”).getUsername());
}
}
Log.d(“查看”、“完成、设置列表适配器…”);
setListAdapter(适配器);
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u friends);
title=(TextView)findViewById(R.id.friendsTitle);
title.setText(“向以下人员之一发送好友请求:”);
新建RemoteDataTask().execute();
registerForContextMenu(getListView());
//添加朋友
btnAdd=(按钮)findviewbyd(R.id.Button);
btnAdd.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
title.setText(“向以下人员之一发送好友请求:”);
viewStatus=0;
新建RemoteDataTask().execute();
registerForContextMenu(getListView());
}
});
//查看好友请求按钮
btnRequests=(按钮)findViewById(R.id.button2);
btnRequests.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
title.setText(“点击以接受请求,按住以拒绝”);
viewStatus=1;
新建RemoteDataTask().execute();
registerForContextMenu(getListView());
}
});
//朋友按钮
btnFriends=(按钮)findViewById(R.id.button3);
btnFriends.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
title.setText(“您的朋友。按住以删除他们”);
viewStatus=2;
新建RemoteDataTask().execute();
registerForContextMenu(getListView());
}
});
}
.....
注意:这是开发的早期阶段。目前主要是编程功能。希望尽早解决此错误。非常感谢任何帮助/建议

提前谢谢!

什么
public class AddFriends extends ListActivity {
    //Global variables
    public static final int ADD_ID = Menu.FIRST;
    public static final int REQUESTS_ID = Menu.FIRST + 1;
    public static final int FRIENDS_ID = Menu.FIRST + 2;
    public static final int DELETE_ID = Menu.FIRST + 3;

    public TextView title;
    public static int viewStatus = 0;

    private List<ParseUser> users;
    private List<ParseObject> requests;

    Button btnAdd, btnRequests, btnFriends;

    //Grabbing users and putting them in the list
    private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
        protected Void doInBackground(Void... params) {

            if (users != null){
                users = null;
            }

            //add friends view
            if (viewStatus == 0 ) {
                ParseQuery<ParseUser> queryUsers = new ParseQuery<ParseUser>("_User");
                queryUsers.orderByDescending("createdAt");
                queryUsers.whereNotEqualTo("username", ParseUser.getCurrentUser().getUsername());

                try {
                    users = queryUsers.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }


            }
            //show requests
            else if (viewStatus == 1) {

                //grab requests only
                ParseQuery<ParseObject> queryRequests = new ParseQuery<ParseObject>("FriendRequests");
                queryRequests.whereEqualTo("to", ParseUser.getCurrentUser());
                queryRequests.whereEqualTo("status", "waiting");

                try {
                    requests = queryRequests.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }


            }
            //View friends
            else if (viewStatus == 2) {

                Log.d("Friends view", "getting current user");
                ParseUser current = ParseUser.getCurrentUser();

                Log.d("Friends view", "Getting friend relation of user");
                ParseRelation <ParseUser> friendRelation = current.getRelation("friends");

                Log.d("Friends view", "Getting relation query");
                ParseQuery <ParseUser> queryFriends =  friendRelation.getQuery();

                Log.d("Friends view", "Getting friend query");
                try {
                    users =  queryFriends.find();
                } catch (ParseException e) {
                    Log.e("queryUsers", "error: " + e);
                }
                Log.d("Friends view", "users = query done");

            }
            return null;
        }

        //before execution
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        //while executing
        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(Void result) {
            //puts users into list view
            ArrayAdapter<String> adapter = new ArrayAdapter<String> (AddFriends.this, R.layout.friends_row);


            if (users != null && viewStatus != 1) {
                for (ParseUser user : users){
                    adapter.add((String) user.get("username"));
                }
            }
            //because requests come in as a parseObject instead of a ParseUser
            else if (viewStatus == 1 && requests != null){
                for (ParseObject request : requests){
                    adapter.add(request.getParseUser("from").getUsername());
                }
            }
            Log.d("View", "Done, setting list adapter..");


            setListAdapter(adapter);


        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friends);


        title = (TextView) findViewById(R.id.friendsTitle);
        title.setText("Send a friend request to one of the following:");

        new RemoteDataTask().execute();
        registerForContextMenu(getListView());

        //Add a friend
        btnAdd = (Button) findViewById(R.id.button);
        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setText("Send a friend request to one of the following:");
                viewStatus = 0;
                new RemoteDataTask().execute();
                registerForContextMenu(getListView());
            }
        });

        //View friend requests button
        btnRequests = (Button) findViewById(R.id.button2);
        btnRequests.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setText("Tap to accept request, hold to deny");
                viewStatus = 1;
                new RemoteDataTask().execute();
                registerForContextMenu(getListView());
            }
        });

        //Friends button
        btnFriends = (Button) findViewById(R.id.button3);
        btnFriends.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setText("Your friends. Hold to delete them");
                viewStatus = 2;
                new RemoteDataTask().execute();
                registerForContextMenu(getListView());
            }
        });


    }

.....