Android 将JSON解析为ListView友好的输出

Android 将JSON解析为ListView友好的输出,android,json,Android,Json,所以我有了这个JSON,然后我的活动将其检索为一个字符串: {"popular": {"authors_last_month": [ { "url":"http://activeden.net/user/OXYLUS", "item":"OXYLUS", "sales":"1148", "image":"http://s3.envato.com/files/1

所以我有了这个JSON,然后我的活动将其检索为一个字符串:

    {"popular":
        {"authors_last_month": [
         {
            "url":"http://activeden.net/user/OXYLUS",
            "item":"OXYLUS",
            "sales":"1148",
            "image":"http://s3.envato.com/files/15599.jpg"
         },
         {
            "url":"http://activeden.net/user/digitalscience",
            "item":"digitalscience",
            "sales":"681",
            "image":"http://s3.envato.com/files/232005.jpg"
         }
         {
            ...
         }
        ],
        "items_last_week": [
         {
            "cost":"4.00",
            "thumbnail":"http://s3.envato.com/files/227943.jpg",
            "url":"http://activeden.net/item/christmas-decoration-balls/75682",
            "sales":"43",
            "item":"Christmas Decoration Balls",
            "rating":"3",
            "id":"75682"
         },
         {
            "cost":"30.00",
            "thumbnail":"http://s3.envato.com/files/226221.jpg",
            "url":"http://activeden.net/item/xml-flip-book-as3/63869",
            "sales":"27",
            "item":"XML Flip Book / AS3",
            "rating":"5",
            "id":"63869"
         },
         {
            ...
         }],
        "items_last_three_months": [
         {
            "cost":"5.00",
            "thumbnail":"http://s3.envato.com/files/195638.jpg",
            "url":"http://activeden.net/item/image-logo-shiner-effect/55085",
            "sales":"641",
            "item":"image logo shiner effect",
            "rating":"5",
            "id":"55085"
         },
         {
            "cost":"15.00",
            "thumbnail":"http://s3.envato.com/files/180749.png",
            "url":"http://activeden.net/item/banner-rotator-with-auto-delay-time/22243",
            "sales":"533",
            "item":"BANNER ROTATOR with Auto Delay Time",
            "rating":"5",
            "id":"22243"},
         {
            ...
         }]
    }
}
它也可以被访问,尽管因为它是一个相当长的字符串,我已经将上面的内容进行了裁剪,以显示所需的内容

基本上,我希望能够访问“items_last_week”中的项目,并创建一个列表-最初我的计划是将“缩略图”放在左侧,旁边是“item”,但今天玩SDK似乎太难或不可能做到这一点,因此,我非常乐意将“items\u last\u week”中的“items”数据放在列表中

来自php,我正在努力使用Java可用的任何JSON库,因为它似乎不仅仅是一行代码,我需要对JSON进行反序列化(我认为这是正确的词),而且它们似乎都需要某种形式的附加类,除了JSONArray/JSONObject脚本之外,我还有一个脚本,它不喜欢上周的项目是嵌套的(同样,我认为这是JSON术语),并且需要很长时间才能在Android emulator上运行

因此,实际上,我需要一种(最好是简单的)方法来将items\u last\u week数据传递给ListView。我知道我需要一个定制的适配器,我可能需要它,但无论我花了多少时间试图弄清楚,我都无法理解如何访问JSON字符串的某些部分

最初我的计划是让 左侧的“缩略图”带有 “项目”位于它旁边,但来自播放 如今,随着SDK的出现 太难或不可能实现的 这个

这远非不可能,但要想正确地使用它将是一件乏味的事情,除非您使用它(希望这是合理的“正确”)。在网络上,性能/带宽问题是用户的问题——在移动设备上,它们是你的问题

因为它似乎不仅仅是一个 我需要的代码行 反序列化(我认为这是正确的 (word)JSON

新JSONObject(数据)
是一行代码。现在,获取JSON需要几行代码,我猜您是从前面提到的URL获取JSON的。对JSON的解析和从互联网上获取JSON都不是Android独有的——所有这些在桌面Java应用程序、Java servlet或其他应用程序上看起来都是一样的

除了JSONArray/JSONObject之外 我的剧本不喜欢 上周的项目是嵌套的

我在解析JSON时没有遇到像您的文件那样的结构问题。此外,这并不是Android独有的——JSON解析器在许多其他基于Java的项目中使用

而且要花很长时间才能继续 Android仿真器

模拟器的速度与开发机器的速度有关。对我来说,模拟器通常比实际的手机硬件慢…我的桌面是四核的。请记住,emulator假装是运行在PC上的ARM芯片组,将ARM操作码动态转换为x86操作码,因此速度不快,也不能很好地利用多核

因此,实际上,我需要一个(最好是 简单)通过 将最近一周的项目数据添加到列表视图中

Android中并没有真正内置的东西可以采用任意JSON结构和任意数据,并直接将其放入
ListView
。这不是JSON独有的——XML也会表现出类似的现象

你的选择是:

  • 创建一个自定义的
    ListAdapter
    ,它包装解析后的JSON
  • 将解析后的JSON转换为
    MatrixCursor
    (想想2D数据数组)并使用
    SimpleCursorAdapter
  • 将解析后的JSON转换为
    ArrayList
    ,并使用
    ArrayAdapter
  • 就短期而言,选项3可能是最简单的

    我知道我需要定制 适配器,我可能可以得到我的 回头看看,但我不明白, 不管我一天中有多少时间 只是花了很多时间想弄明白, 如何访问JSON的某些部分 字符串


    这个问题太模糊了,无法提供太多的援助。您可能会考虑打开一个单独的问题,标记为java和JSON,在那里您可以找到JSON.org解析器存在问题的细节。

    是否需要JSON帮助?然后你可以在你的问题中添加Json标记。一个“java”标记也很合适。OP的问题分解得很好。简明扼要,并逐部分回答/分析。