我有一个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循环进行解析。
有什么想法吗? 提前谢谢。