【问题标题】:Json Array as response to android clientJson Array 作为对 android 客户端的响应
【发布时间】:2015-05-21 06:32:06
【问题描述】:

我有一个要求,其中 json 数组响应应该是这样的

[{"rank":231,"title":"猎人之夜"},{"rank":232,"title":"加勒比海盗:黑珍珠号的诅咒"},{"rank":233,"title":"Lagaan:印度往事"},{"rank":234,"title":"天空之城"}]


它由 android 客户端接收到的这个响应 n 它会相应地解析,不知何故我无法生成正确的响应结构。

现在非常感谢您的帮助

@WebServlet("/JsonHost")
public class JsonHost extends HttpServlet {
    private static final long serialVersionUID = 1L;

    int rank;
    int title;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        PrintWriter out = response.getWriter();
        // get request parameters for userID and password

        String[] movie = {
                "The Shawshank Redemption",
                "The Godfather",
                "The Godfather: Part II",
                "The Dark Knight",
                "Pulp Fiction",
                "Schindler's List",
                "12 Angry Men"..............};


int offset=0;
    int limit=20;

        if (request.getParameter("offset") != null)
            offset = Integer.parseInt(request.getParameter("offset"));
        System.out.println("offset value:" + offset);


        JSONArray mJSONArray = new JSONArray(Arrays.asList(movie));

    //  System.out.println(gn.toJson(mJSONArray));

        //out.println(gn.toJson(mJSONArray));

        String m[][] = new String[20][20];

        for (int rank = 0; rank < offset + limit && rank < movie.length; rank++){
                for (int title = 0; title < offset+limit; title++) {

                    m[rank][title] = movie[title];



                //  System.out.println(m[rank][title]);
                    out.println(gn.toJson(m[rank][title]));
                }

            }


        }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }

}

【问题讨论】:

  • 你试过的请分享
  • 谷歌关于Gsonjackson
  • 我尝试过使用 Gson 的 m,只是我对如何生成正确的结构感到困惑,我已经编辑以包含一些代码,请检查 @NinadPingale
  • @Lrrr m 使用 Gson 但结构不会正确,我想我实现它的方式有问题,请检查
  • 抱歉,它是 Gson 类的对象,我必须在编辑 @Lrrr 时将其遗漏

标签: java json gson


【解决方案1】:

要使用 Gson,您可以这样做:

  1. 像这样为你的电影创建一个类:

    public class Movie {
    
               private int rank;
        private String name;
    
        public Movie(int rank, String name) {
            this.rank = rank;
            this.name = name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setRank(int rank) {
            this.rank = rank;
        }
    
        public int getRank() {
            return rank;
        }
    }
    
  2. 有一个您的电影列表,例如:

    List<Movie> movies = new ArrayList<Movie>();
    
  3. 将一些电影添加到您的列表中:

    movies.add(new Movie(1,"The Shawshank Redemption"));
    movies.add(new Movie(2,"The Godfather"));
    
  4. 将您的列表转换为 Json :

    Gson gson = new Gson();
    
    String movieJsonList = gson.toJson(movies);
    

您可以看到字符串movieJsonList 将是:

[{"rank":1,"name":"肖申克的救赎"},{"rank":2,"name":"教父"}]

【讨论】:

  • 谢谢你,这很简单,但我想我需要你给我指路
【解决方案2】:

这是你的任务。我希望它对你有帮助。!

JSONArray array=new JSONArray();
    int index=0;
    for(int i=231;i<235;i++){
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("rank", i);
        jsonObject.put("title", movie[index++]);
        array.put(jsonObject);
    }

【讨论】:

  • 感谢您的建议,虽然这不是我想要的,但我学到了一些东西
猜你喜欢
  • 1970-01-01
  • 2019-11-27
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多