【问题标题】:JSONObject to JSONArrayJSONObject 到 JSONArray
【发布时间】:2013-08-29 03:17:32
【问题描述】:

我需要一些帮助。我还是android开发人员的新手。

这是数据示例

strAPI_TERMINAL= "{ 'terminal': { 'id': 2, 'fmt_id': 'fmt0002', 'terminal_type': 'multiple' }}"

我需要将此对象数据解析为 JSONArray

我做了什么...

JSONObject jsonObject = new JSONObject(strAPI_TERMINAL);
JSONArray terminal_array = new JSONArray();
JSONArray t_array = terminal_array.put(jsonObject);

当我注销数据时...是的,它已像这样解析为数组

t_array[{"terminal":{"fmt_id":"fmt0002","id":2,"terminal_type":"multiple"}]

但是当我想用它来获取“终端”数据时......

JSONArray TERMINAL_JSON=new JSONArray(t_array.getJSONObject(i).getString("terminal").toString());

上面写着:

Error:Value {"id":2,"fmt_id":"fmt0002","terminal_type":"multiple"} 

有人帮帮我吗???

感谢您的帮助...

【问题讨论】:

    标签: android arrays jsonobject


    【解决方案1】:

    尝试解析 JSON 如下:

    JSONObject obj1 = new JSONObject(strAPI_TERMINAL);
     try {
      JSONArray result = obj1.getJSONArray("terminal");
    for(int i=0;i<=result.length();i++)
     {
        String Id=result.getString("fmt_id");
          String terminalType=result.getString("terminal_type");
     }
     } catch (JSONException e) {
         e.printStackTrace();
    }
    

    希望这会对你有所帮助。

    谢谢

    【讨论】:

    • 一点修正:result.length() 长度 - 在这种情况下是一个方法名称
    【解决方案2】:

    正如 Josnidhin 所说,“终端”是一个 JSON 对象。如果你想让它成为一个数组,你首先需要把它变成这样(注意数组括号):

    strAPI_TERMINAL= "{ 'terminal': [{ 'id': 2, 'fmt_id': 'fmt0002', 'terminal_type': 'multiple' }]}"
    

    您真的只是想遍历终端对象中的键吗?如果是这样,也许你想看看这篇文章:How to iterate over a JSONObject?

    【讨论】:

      【解决方案3】:

      根据您的代码,'t_array' 是 JSONObject 的数组。要访问“t_array”中的每个项目,您需要将每个项目作为 JSONObject 获取,然后访问该 JSONObject 的值。

      “终端”的值是一个 json 对象,你不能像这样将它转换为 json 数组。

      要访问“终端”的值,请执行以下操作

      t_array.getJSONObject(i).getJSONObject("terminal");
      

      以上代码将返回以下 JSONObject

      { 'id': 2, 'fmt_id': 'fmt0002', 'terminal_type': 'multiple' }
      

      【讨论】:

      • 是的...但是当我执行 for 循环时它重复了..因为我无法获取数据的索引...不像 JSONArray..我可以使用索引来获取确切的数据.. .任何想法?
      • 而且...如果您看到日志 t_array[{"t​​erminal":{"fmt_id":"fmt0002","id":2,"terminal_type" :"multiple"}]...但我不确定它是否真的被转换了...
      • 终端未解析为数组,而是添加到数组中。你想达到什么目的?
      • 对不起...如果我已经在对象中完成了,我可以在 for 循环中获取每个对象的索引吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2018-07-18
      相关资源
      最近更新 更多