0

我从 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 字符串中的所有值

订单ID = ?? 包名 = ?? 等等

谢谢

4

1 回答 1

1

从 Playstore 购买后,我收到了这个 JSON 字符串

如果这真的是你得到的,你需要联系他们并告诉他们修复他们的 API;该字符串不是有效的 JSON。它有两个问题:

  1. JSON 文档必须有一个对象或数组作为顶级项。引用的字符串{开头缺少 a 结尾缺少 a }

  2. JSON 中的所有键都必须用双引号引起来。第一个,PurchaseInfo不是。

此外,您的代码正在执行此操作:

JSONArray mPurchInfo = j1.getJSONArray("PurchaseInfo"); 

...但如果它有效的 JSON,PurchaseInfo它就不是一个数组,而是一个对象。

看了一下,如果你去掉PurchaseInfo:开头的那个,它是有效的。删除后,此行:

JSONObject j1 = new JSONObject(tester1);

...将为您提供一个对象,您可以从中查询信息:

String orderId = j1.getString("orderId");
于 2013-01-06T07:41:43.283 回答