我尝试使用 JSON 将数据从我的 android 客户端发送到我的 Web 服务器。
我面临一个问题。由于现在调试了两天多,看来是JSONArray类的toString方法不能正常工作的问题。
我有不能使用 GSON 库的限制。因此,我只处理 JSONArray 和 JSONObject 库。
我构造我的 JSONArray 如下:
ArrayList<SMS> SMSArray = SMSHelper.getSMSDetails(context, rEmail, rPhoneNum);
JSONArray jSMSArray = new JSONArray();
for(int i = 0; i < SMSArray.size(); i++) {
jSMSArray.put(i, SMSArray.get(i).toJSON());
Log.wtf("::trace", "JSONArray.get(i).toString(): " + jSMSArray.get(i).toString());
}
Log.wtf("::trace", "JSONArray.toString():" + jSMSArray.toString());
在循环内部,我从 JSONArray 和 ArrayList 中打印出完全相同的字符串。所以似乎将 ArrayList 复制到 JSONArray 工作正常。加上循环后两个 Array 的大小是相同的。
然而,当我在循环之后使用 JSONArray.toString() 时,令人惊讶的是,字符串并不完整,字符串仅打印出包含我的 JSONArray 的 285 个 JSONObject 中的几个 JSONObject!
我想将此 JSONARRAY 发送到我的服务器以在服务器端解析它,但由于 JSONArray 不正确。服务器无法解析接收到的字符串链。收到的字符串链看起来像: [{object1}, ..., {objecti}, {"id", $myId, "thread", $myThread, "content", "hey
我真的希望你们中的一个能够帮助我。这让我发疯;首先我使用了语法for(Object object: ObjectArray)
,但后来我了解到 JSONArray 不是可迭代对象,所以我尝试将 JSONObject 直接放在特定索引中,但我得到了相同的结果。
这段代码是我硕士论文的一部分,我在这个细节上浪费了很多时间......:/
真的,期待你的回答。
晚安,
比约恩
编辑:我的 JSONObject 是存储在 android 手机中的 SMS。我将它们转换为 JSONObject 的功能如下:
public JSONObject toJSON() {
JSONObject jSMS = new JSONObject();
try {
jSMS.put("id", this.id);
jSMS.put("thread", this.thread);
jSMS.put("rEmail", this.rEmail);
jSMS.put("rPhoneNum", this.rPhoneNum);
jSMS.put("sPhoneNum", this.sPhoneNum);
jSMS.put("sName", this.sName);
jSMS.put("date", this.date);
jSMS.put("content", this.content);
jSMS.put("type", this.type);
} catch (JSONException e) {
Log.wtf("::trace", Log.getStackTraceString(e));
}
return jSMS;
}
EDIT1:当我遍历我的 JSONArray 并使用JSONArray.getJSONObject(i).toString()
一切正常时,它会打印出数组的全部内容,当我调用 JSONArray.toString() 方法时,它只会打印出 JSONArray 的开头。我真的开始厌倦了。我不知道什么会导致这样的错误。