使用Gson编码的空json_decode

时间:2014-02-26 15:05:38

标签: php android json null gson

我有一个Java方法,我编码(使用GSON)并将json数据发送到服务器中的php脚本:

public JSONObject storeStadistics(Integer user_id, ArrayList<Question> questionList) {
    Gson gson = new Gson();
    JsonElement element = gson.toJsonTree(questionList, new TypeToken<ArrayList<Question>>() {}.getType());
    if(!element.isJsonArray()) {
        System.out.println("ERROR parsing in storeStadistics");
        return null;
    }

    JsonArray jsArray = element.getAsJsonArray();
    JSONObject jsQuestions = new JSONObject();

    try {
        jsQuestions.put("questions", jsArray);
        jsQuestions.put("user", user_id);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        System.out.println("ERROR in storeStadistics:");
        e.printStackTrace();
    }

    List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
    params.add(new BasicNameValuePair("tag", storeStadistics_tag));
    params.add(new BasicNameValuePair("object", jsQuestions.toString()));

    JSONObject json = jsonParser.getJSONFromUrl(server+"playManager.php", params);

    return json;
}

一旦我进入我的PHP脚本并运行我的代码的正确部分,我就像这样调用我的函数:

$result = $db->storeStadistics($_POST['object']);

在storeStadistics内:

public function storeStadistics($object) {
    $object = json_decode($object, false); //true doesn't work either

    ...
}

此解码的结果为NULL ,但我不明白为什么会这样。如果我在解码之前打印$ object我得到这个:

string(242) "{"user":1,"questions":"[{\"mArticle\":\"\",\"mDefinition\":\"Was macht eine Person, die schlecht über eine andere Person spricht? Sie...\",\"mName\":\"tratschen\",\"mId\":27,\"mPuntuacion\":0,\"mClue\":false,\"mSuccess\":true,\"mTries\":6}]"}"

其中包含我需要的所有信息。 基本上它是一个字符串,其编码会将其转换为具有两个字段的对象:user_id和一个数组,我想用foreach循环进行解析。

有什么想法吗? 提前谢谢。

0 个答案:

没有答案