我从Playstore购买后收到了这个JSON字符串,当我试图解析它时,我显然在代码中遗漏了一些东西。
PurchaseInfo:{"orderId":"12999763165555505758.1317333586444405",
"packageName":"com.mypkgname.myapp",
"productId":"monthly_purchase_01",
"purchaseTime":1357456489000,
"purchaseState":0,
"purchaseToken":"yrynypfkdncvhlxdbypysvwz.AO-J1OxFkndfqkClAqbbYAOApkMgTG4VX9Ef0uNP0FIs9-xGrXivkbx3FNMA2yNU12K_sbvRGFcknVBTfisI-uZawCXLGlMX4v4Zw8GFOmS0Q6PIbiITTGqn5h1QbEB4Rv84sXdUJHP3B_UQfujZN7ADi9bm_N4_iA"}
以下是我用它来尝试解析的代码片段
try {
JSONObject j1 = new JSONObject(tester1);
JSONArray mPurchInfo = j1.getJSONArray("PurchaseInfo");
int count = mPurchInfo.length();
final String[] purchInfo = new String[count];
JSONObject q1 = mPurchInfo.getJSONObject(0);
purchInfo[0] = q1.getString("orderId");
purchInfo[1] = q1.getString("packageName");
purchInfo[2] = q1.getString("productId");
purchInfo[3] = q1.getString("purchaseTime");
purchInfo[4] = q1.getString("purchaseState");
purchInfo[5] = q1.getString("purchaseToken");
orderID=purchInfo[0];
} catch (JSONException e) {
Log.e("Error","Yes");
}
我正在捕获错误,因为我在日志中看到这个最后一个日志语句,但我仍在尝试学习解析JSON字符串
我希望我至少接近 理想情况下,我希望将字符串设置为JSON字符串中的所有值
orderID = ?? packageName = ?? 等
由于
答案 0 :(得分:1)
我从Playstore购买后收到了这个JSON字符串
如果那是真的你得到了什么,你需要联系他们并告诉他们修复他们的API;该字符串无效JSON。它有两个问题:
JSON文档必须将对象或数组作为顶级项目。引用的字符串在开头缺少{
,在结尾处缺少}
。
JSON 中的所有键必须为双引号。第一个PurchaseInfo
,不是。
此外,您的代码正在执行此操作:
JSONArray mPurchInfo = j1.getJSONArray("PurchaseInfo");
...但如果是有效的JSON,PurchaseInfo
将不是一个数组,它就是一个对象。
看一下,如果你在开头删除了PurchaseInfo:
,它就是有效的。删除后,这一行:
JSONObject j1 = new JSONObject(tester1);
...将为您提供一个可以查询信息的对象:
String orderId = j1.getString("orderId");