2017-04-25 86 views
0

我如何能分析一个JSONArray当从web服务的响应被格式化为这样:如何解析JSONArray的Android

<?xml version="1.0" encoding="UTF-8"?> 
 
<string xmlns="http://www.somewebsite.com/"><PricingTier ANo='' MsgFlg=''><Group Type='Mouldings'><CurTier>BRZ</CurTier><NxtTier>SIL</NxtTier><CurTierFrom>$4,000</CurTierFrom><CurTierTo>$9,999</CurTierTo><NxtTierFrom>$10,000</NxtTierFrom><NxtTierTo>$14,999</NxtTierTo><CurSales>$2,107</CurSales><ReqSales>$7,893</ReqSales><MsgFull></MsgFull><MsgPart></MsgPart></Group><Group Type='Accessories'><CurTier>BAS</CurTier><NxtTier>GLD</NxtTier><CurTierFrom>$0</CurTierFrom><CurTierTo>$1,499</CurTierTo><NxtTierFrom>$1,500</NxtTierFrom><NxtTierTo>$4,999</NxtTierTo><CurSales>$125</CurSales><ReqSales>$800</ReqSales><MsgFull></MsgFull><MsgPart></MsgPart></Group></PricingTier></string>

当我运行我的应用程序,我得到一个错误说“无法将字符串转换为JSONObject“。我知道它不喜欢如何对字符串响应进行格式化,所以我想知道我可以将响应格式(JSON_DATA)格式化为解析器可以正确使用的内容。

代码:

if (JSON_DATA != null) { 

      try { 
       JSONObject reader = new JSONObject(JSON_DATA); 

       JSONArray Group = reader.getJSONArray("Group"); 

       for (int i = 0; i < Group.length(); i++) { 
        JSONObject g = Group.getJSONObject(i); 

        final String Type = g.getString("-Type"); 
        final String CurTier = g.getString("CurTier"); 
        final String NxtTier = g.getString("NxtTier"); 
        final String CurTierFrom = g.getString("CurTierFrom"); 
        final String CurTierTo = g.getString("CurTierTo"); 
        final String NxtTierFrom = g.getString("NxtTierFrom"); 
        final String NxtTierTo = g.getString("NxtTierTo"); 
        final String CurSales = g.getString("CurSales"); 
        final String ReqSales = g.getString("ReqSales"); 

        fragment.getActivity().runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          tvType.setText(Type); 
          tvCurTier.setText(CurTier); 
          tvNxtTier.setText(NxtTier); 
          tvCurTierFrom.setText(CurTierFrom); 
          tvCurTierTo.setText(CurTierTo); 
          tvNxtTierFrom.setText(NxtTierFrom); 
          tvNxtTierTo.setText(NxtTierTo); 
          tvCurSales.setText(CurSales); 
          tvReqSales.setText(ReqSales); 
         } 
        }); 
       } 
+0

您的输入是在xml请参考此答案如何将xml字符串转换为JSONObject:http://stackoverflow.com/a/18339178/5245903 –

+0

谢谢,我不小心调用了错误的URL。 –

回答

0

URL目标是web服务,而不是Web代理。因此结果是XML而不是JSON。