Java 分析数据时出错,无法将字符串转换为JSON-JSONException

Java 分析数据时出错,无法将字符串转换为JSON-JSONException,java,php,android,mysql,json,Java,Php,Android,Mysql,Json,解析从服务器获取的数据时出错。 我试图通过向外部数据库(MySQL)发送一些值来更新外部数据库。一旦更新了数据库,我将尝试获取更新的值并对内部SQLite数据库执行更新 我正在发布此问题的相关代码。此外,我还标记了profile.java类中出现错误的位置,在这里我试图检索JSON 当我在注册用户后检索数据时,我不会得到与数据解析相关的错误。只是这个更新 此外,外部数据库没有得到更新 是的,在发布这个问题之前,我已经做了足够的研究。我没有发现任何人或任何主题有相同的问题,这就是我发布这个问题的原

解析从服务器获取的数据时出错。 我试图通过向外部数据库(MySQL)发送一些值来更新外部数据库。一旦更新了数据库,我将尝试获取更新的值并对内部SQLite数据库执行更新

我正在发布此问题的相关代码。此外,我还标记了profile.java类中出现错误的位置,在这里我试图检索JSON

当我在注册用户后检索数据时,我不会得到与数据解析相关的错误。只是这个更新

此外,外部数据库没有得到更新

是的,在发布这个问题之前,我已经做了足够的研究。我没有发现任何人或任何主题有相同的问题,这就是我发布这个问题的原因

更新:我成功了。问题是我在index.php中将标记设置为变量,而不是值。我在做tag=“$profile”而不是tag='profile'。目前我成功地更新了一列。一旦我成功地更新了所有列,我将再次更新此帖子。谢谢大家的宝贵意见

下面是profile.java的代码

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.b_profileSave:
        String email = email_et.getText().toString();
        String name = username_tt.getText().toString();
        String fullname = fullname_et.getText().toString();
        String dob = dob_et.getText().toString();
        String phone = phone_et.getText().toString();
        String address = address_et.getText().toString();
        String city = city_et.getText().toString();
        String state = state_et.getText().toString();
        String country = country_et.getText().toString();
        String zipcode = zipcode_et.getText().toString();
        UserFunctions userFunction = new UserFunctions();
//IM GETTING ERROR AT THIS POINT
        JSONObject json = userFunction.updateProfile(email, fullname, dob,
                phone, address, city, state, country, zipcode);
        System.out.println(json);
                    ....}
下面是我的UserFunction类的代码,该类具有profile方法,该方法负责从服务器发送数据和检索JSON:

public JSONObject updateProfile(String email, String fullname, String dob,
        String phone, String address, String city, String state,
        String country, String zipcode) {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", profile_tag));
    params.add(new BasicNameValuePair("email", email));
    params.add(new BasicNameValuePair("full_name", fullname));
    params.add(new BasicNameValuePair("birth_date", dob));
    params.add(new BasicNameValuePair("phone", phone));
    params.add(new BasicNameValuePair("address", address));
    params.add(new BasicNameValuePair("city", city));
    params.add(new BasicNameValuePair("state", state));
    params.add(new BasicNameValuePair("country", country));
    params.add(new BasicNameValuePair("zip", zipcode));
    JSONObject json = jsonParser.getJSONFromUrl(profileURL, params);
    System.out.println(params);
    Log.e("JSON", json.toString());
    return json;
}
下面是对数据库执行查询的DB_Functions.php的代码:

public function profile($email, $fullname, $dob, $phone, $address, $city, $state, $country, $zipcode){
    $result = mysql_query("UPDATE users SET updated_at = NOW(), full_name = '$fullname', birth_date = '$dob', phone = '$phone', address = '$address', city = '$city', state = '$state', country = '$country', zip = '$zipcode' WHERE email = '$email'") or die(mysql_error());
    if($result){
        $r = mysql_query("SELECT * FROM users WHERE email = '$email'");
        return mysql_fetch_array($r); 
    }else{
        return false;}
}
我的logcat输出:

05-23 03:01:03.938: E/JSON(393): Invalid Request
05-23 03:01:03.938: E/JSON Parser(393): Error parsing data org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject


E/JSON(393): 

{
    "uid": "4fb32016d06af1.89812745",
    "error": 0,
    "user": {
        "zip": null,
        "phone": null,
        "upda‌​ted_at": null,
        "birth_date": null,
        "address": null,
        "email": "vvp@gmail.com",
        "name": "vik‌​ing",
        "state": null,
        "created_at": "2012-05-15 20:33:42",
        "country": null,
        "city": null,
        "full_name": null
    },
    "success": 1,
    "tag": "login"‌​
}

Viking,如果你能在这里显示JSON字符串输出,那也会很有帮助。@jmort253下面是我得到的JSON字符串,但问题是这个JSON字符串与我在index.php中的标记设置为login(login函数)时得到的相同。这不是我期望的JSON。05-23 03:01:03.948:E/JSON(393):{“uid”:“4fb32016d06af1.89812745”,“错误”:0,“用户”:{“zip”:null,“电话”:null,“更新地址”:null,“出生日期”:null,“地址”:null,“电子邮件”:vvp@gmail.com“,”姓名“:”维京人“,”州“:”空“,”创建地点“:”2012-05-15 20:33:42“,”国家“:”空“,”城市“:”空“,”全名“:”空“,”成功“:”1,“标记“:”登录“}”概要文件标记在UserFunctions.java类中定义。我想发布最小的代码,这就是我没有包含该部分的原因,但它看起来像:private static String profile_tag=“profile”;Viking,我将你的JSON添加到问题正文中。在评论中发布这样大的代码块并不是一个好主意。@jmort253谢谢您添加它。很抱歉我在评论中发布了代码,我对这个网站比较陌生,所以我不知道。这种情况不会再发生了。
public function profile($email, $fullname, $dob, $phone, $address, $city, $state, $country, $zipcode){
    $result = mysql_query("UPDATE users SET updated_at = NOW(), full_name = '$fullname', birth_date = '$dob', phone = '$phone', address = '$address', city = '$city', state = '$state', country = '$country', zip = '$zipcode' WHERE email = '$email'") or die(mysql_error());
    if($result){
        $r = mysql_query("SELECT * FROM users WHERE email = '$email'");
        return mysql_fetch_array($r); 
    }else{
        return false;}
}
05-23 03:01:03.938: E/JSON(393): Invalid Request
05-23 03:01:03.938: E/JSON Parser(393): Error parsing data org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject


E/JSON(393): 

{
    "uid": "4fb32016d06af1.89812745",
    "error": 0,
    "user": {
        "zip": null,
        "phone": null,
        "upda‌​ted_at": null,
        "birth_date": null,
        "address": null,
        "email": "vvp@gmail.com",
        "name": "vik‌​ing",
        "state": null,
        "created_at": "2012-05-15 20:33:42",
        "country": null,
        "city": null,
        "full_name": null
    },
    "success": 1,
    "tag": "login"‌​
}