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

处理的json是文章的列表,其中有:日期、文章标题、连接、发布时间戳等对象。
做android app打算把同一天的文章都在viewpager的一页里,那应该怎么返回相应的数据结构呢?
我想过将日期做为key,对应这一天的jsonArray处理好作为value,但是这样需要遍历读取出日期,再判断,加入。虽然数据量不大,但是这样代码太麻烦了。
请问有什么好的处理方法呢?或者android开发有什么好的解决方法不用这么麻烦的呢?
学生,开发经验尚浅,求解决,谢谢。
——————————————————————————————————————————————
主要是我觉得太麻烦了。先将json处理成list,再将list分开做成arraylist<HashMap<String,object>>,然后在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<HashMap<String,Object>>,直接list<list>,只是用了hashmap方便存储当天最新时间戳等元素。
我就是想看看有没有更妙的方法。纯属吃饱了撑的。

阅读 6.7k
4 个回答

服务器返回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条

那就要求后台的给你想要的数据结构吧
这样就不麻烦了~~

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

按日期查询出来。。直接用fastjson序列化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题