java - 怎么将有JSON中有相同值放在一组?

 开卷_汤娅造_673 发布于 2022-10-31 22:58

处理的json是文章的列表,其中有:日期、文章标题、连接、发布时间戳等对象。
做android app打算把同一天的文章都在viewpager的一页里,那应该怎么返回相应的数据结构呢?
我想过将日期做为key,对应这一天的jsonArray处理好作为value,但是这样需要遍历读取出日期,再判断,加入。虽然数据量不大,但是这样代码太麻烦了。
请问有什么好的处理方法呢?或者android开发有什么好的解决方法不用这么麻烦的呢?
学生,开发经验尚浅,求解决,谢谢。
——————————————————————————————————————————————
主要是我觉得太麻烦了。先将json处理成list,再将list分开做成arraylist>,然后在adpter中还要解开。太过于复杂了。方法也太笨了,技术不行,想不出更妙的方法。
——————————————————————————————————————————————
我的意思将

[
    {....,"date":"2015-12-21",....},
    {....,"date":"2015-12-21",....},........都是2015-12-21的
    {....,"date":"2015-12-22",....},........都是2015-12-22的   
    {....,"date":"2015-12-23",....} ........都是2015-12-23的  
]

变为

[
    [{....,"date":"2015-12-21",....},
    {....,"date":"2015-12-21",....}]
    [{....,"date":"2015-12-22",....}],   
    [{....,"date":"2015-12-23",....}]   
]

就像Excel的分类汇总那样。而不是在SQLite中select..where那样。
除了上面写的用数据结构处理一下,我还真的想不到更好的方法了,请指点。
————————————————————————————————————————————————
json格式是这样的:

{"error":"","posts":[{"date":"2015-12-24","name":"","pic":"","publishtime":"1450926000","excerpt":""},.......]

看样子是我的表达能力有限。抱歉。就像excel的分类汇总那样,而不是select* from where。比如这一周的数据,周一放一堆,周二放一堆,周三放一堆,如此类推。返回的结果是一周分好堆的数据,而不是某一天的数据。
经过你们提醒我用了sqlite做缓存。只不过依然还是要用我以前的方法,读出一堆数据,然后在处理一下才能分堆。如果是用listview就不用这样。主要是因为我用viewpager,一页是一天的数据。所以才有这么麻烦。数据量不大,所以速度也不用多少。
也可以不用arraylist>,直接list,只是用了hashmap方便存储当天最新时间戳等元素。
我就是想看看有没有更妙的方法。纯属吃饱了撑的。

4 个回答
  • 按日期查询出来。。直接用fastjson序列化

    2022-10-31 23:59 回答
  • 这种结构化的数据,查询之后丢到SQLite里保存。然后下次直接查数据库,用CursorAdapter更新ListView。
    SQL查询同一天的数据不是一句话的事情么~

    2022-10-31 23:59 回答
  • 那就要求后台的给你想要的数据结构吧
    这样就不麻烦了~~

    2022-10-31 23:59 回答
  • 服务器返回json

    [
        {
            "id": 1,
            "日期": "2015-12-20",
            "文章标题": "组图:19岁女学生为内衣代言 秀D罩杯波涛胸涌",
            "链接": "http://news.cnr.cn/native/pic/20151219/t20151219_520849281.shtml",
            "发布时间戳": 1450706617
        },
        {
            "id": 2,
            "日期": "2015-12-20",
            "文章标题": "长腿林立美丽“冻”人 美女半裸滑雪香艳无边(组图)",
            "链接": "http://news.163.com/15/1220/14/BB9MO1AS00014AEE.html",
            "发布时间戳": 1450706417
        },
        ...
    ]

    java

        private class Article{
            int id;
            String 日期;
            String 文章标题;
            String 链接;
            long 发布时间戳;
        }

    用gson对服务器返回的json转换成java对象,然后存入sqlite,用id为主键。
    我习惯用Afinal数据库框架。

    从本地恢复数据就很简单啦,ORDERY BY id DESC LIMIT xx条即可。甚至像网易新闻,有不同分类新闻,在java类加type字段,查找时WHERE type=x ORDERY BY id DESC LIMIT xx条

    2022-10-31 23:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有