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