在Android上转换JSON文件中的对象数组时出错

时间:2016-05-11 00:34:28

标签: java android json wordpress parsing

我有一个来自wordpress中的rest API的JSON文件,它有一个带有两个用户记录的自定义帖子,我想从自定义字段用户数据(id,name,pass,client_type)获取数据,这是我的JSON文件:

--3way

这是Java中的代码:

sequencer.c

它没有带上面的数据,有人可以帮我解决???

2 个答案:

答案 0 :(得分:1)

目前,我正在开发一款几乎一直通过REST服务与服务器通信的应用。我发现这是一种简化与后端通信的方法:

  • 使用OkHttp,可轻松处理对服务器的所有请求。然后我可以将响应作为字符串获取(事实上,它实际上是一个字符串化的JSON)。
  • 使用Gson解析此响应字符串,这会阻止我从JSON响应中读取每个字符串,并且必须自己解析数据。为此,我需要将我之前的响应建模为一个类。例如:

    public class Blog implements Parcelable {
    
        @SerializedName("status")
        private String mStatus;
    
        @SerializedName("count")
        private int mCount;
    
        @SerializedName("pages")
        private int mPages;
    
        @SerializedName("posts")
        private ArrayList <Post> mPosts;    
        // "Post" is another Parcelable model class like this one
    
        ...
    
        // Implement getters and setters for each variable
        ...
    }
    
根据Gson docs,

SerializedName 是:

  

一个注释,指示此成员应序列化为JSON,并提供名称值作为其字段名称。

因此,传递给SerializedName的字符串应该是JSON响应中项的键。 然后,回到onPostExecute(),你可以像这样解析JSON字符串:

Gson gson = new GsonBuilder().create;
gson.fromJson(responseString, Blog.class);

希望你觉得这很有用!请问是否有一些我没有解释的事情:)。

答案 1 :(得分:0)

您的json响应访问custom_fields项非常复杂。您可以将custom_fields的所有项目作为键值对,而不是数组,例如。"name":"name_value",但下面的代码显示了如何读取这些值。

        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
        JSONObject fieldsObject = jsonChildNode.getJSONObject("custom_fields");
        JSONArray idArray = fieldsObject.getJSONArray("id");
        String idValue = idArray.getString(0);

        JSONArray nameArray = fieldsObject.getJSONArray("name");
        String nameValue = nameArray.getString(0);

        JSONArray passArray = fieldsObject.getJSONArray("pass");
        String passValue = passArray.getString(0);

        JSONArray clientArray = fieldsObject.getJSONArray("client_type");
        String clientValue = clientArray.getString(0);

visit SO : How to parse JSON in Android