解析嵌套的 Json 数据结构?

Posted

技术标签:

【中文标题】解析嵌套的 Json 数据结构?【英文标题】:parsing nested Json data structure? 【发布时间】:2019-06-28 05:04:07 【问题描述】:

我的 JSON 结构如下,我正在尝试使用它。我需要检索嵌套 JSON 数组图像的内容,但我并不完全知道这样做的正确方法,我假设创建一个“数据”的父对象类并为图像创建另一个对象类就可以了.这个 Json 结构是否可以在颤振和飞镖中解析?帮助将不胜感激。


        "data": 
            "id": "1",
            "title": "Prof. Ernesto Shanahan Jr.",
            "slug": "laudantium",
            "description": "Enim voluptas iure deleniti eveniet autem in. Exercitationem veniam est ducimus velit incidunt sit recusandae. Sed animi harum voluptatibus. Optio asperiores aspernatur iure quia. Quia natus est quo odit fugit omnis mollitia et. In repellendus ut facilis ut. Non aut illo optio quisquam laudantium. Qui blanditiis consequuntur asperiores. Qui pariatur reiciendis voluptatibus magni. Voluptatem reiciendis quis vitae eligendi. Iste qui dolor eum vitae nobis asperiores aut. Non perferendis ut hic id qui rerum ut. Error tenetur ut cum non quia natus quibusdam. Rerum facilis quibusdam sit occaecati quae ea. Ipsum nisi possimus sed similique autem quia quod.",
            "excerpts": "Animi nihil beatae et. A et molestiae eum aut vitae consequuntur distinctio. Officiis sit praesentium fuga omnis ut autem nisi atque.",
            "geo": "27.6406821;85.3203836",
            "deleted_at": null,
            "tags": [
                
                    "id": "1",
                    "title": "Mrs. Daniela Goldner Sr.",
                ,
                
                    "id": "6",
                    "title": "Raegan Quitzon",
                ,
                
                    "id": "10",
                    "title": "Blanca Hartmann",
                
            ],
            "categories": [
                
                    "id": "7",
                    "title": "Mia Franecki",
                    "slug": "dolor",
                    "description": "Voluptatibus corporis eos adipisci odit laborum voluptatem. Repudiandae veniam ad facere id ipsam delectus. Fugiat quia non molestiae optio corrupti animi. Quaerat qui culpa distinctio dicta id voluptatum consectetur. Alias esse ut est sapiente quos et. In fugiat doloribus harum rerum eos neque quo. In rerum minus iure dolorem ex architecto nemo numquam. Aut quam qui error et non consequuntur officia pariatur. Sint ut labore ea excepturi quis officiis. Ipsam quisquam vitae sequi quos distinctio sit libero. Sed iure sed voluptates inventore debitis accusantium.",
                    "excerpts": "Quibusdam ut voluptas blanditiis sunt. Labore illo sit nihil et quod dolor eveniet. Nobis ullam ea adipisci.",
                    "deleted_at": null,
                ,
                
                    "id": "8",
                    "title": "Mrs. Libby Will DDS",
                    "slug": "vitae",
                    "description": "Et temporibus neque delectus facilis repellat quasi. Autem quibusdam sed quia delectus et dolorem facere. Dolorem suscipit omnis dolor voluptates asperiores atque eveniet. Laboriosam velit est omnis quia recusandae a. Assumenda nihil ut neque omnis voluptas magni repellendus. Ratione eum quam provident animi omnis tenetur nesciunt. Molestias et qui asperiores porro. Adipisci animi fugiat sunt dolores. Sit ad quis dolorum totam quia. Veritatis qui qui quidem quas quaerat ratione.",
                    "excerpts": "Est qui sit praesentium. Unde neque est quasi facilis aut aliquam voluptas. Alias molestias et in dicta omnis et laudantium.",
                    "deleted_at": null,
                
            ],
            "landmarks": [],
            "images": [
                
                    "id": "1",
                    "title": "Place Image 01",
                    "slug": "place01",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "2",
                    "title": "Place Image 02",
                    "slug": "place02",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "3",
                    "title": "Place Image 03",
                    "slug": "place03",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "4",
                    "title": "Landmark Image 01",
                    "slug": "landmark01",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "5",
                    "title": "Landmark Image 02",
                    "slug": "landmark02",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "6",
                    "title": "Landmark Image 03",
                    "slug": "landmark03",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "7",
                    "title": "Activity Image 01",
                    "slug": "activity01",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "8",
                    "title": "Activity Image 02",
                    "slug": "activity02",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "9",
                    "title": "Activity Image 03",
                    "slug": "activity03",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "10",
                    "title": "Itinerary Image 01",
                    "slug": "itinerary01",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "11",
                    "title": "Itinerary Image 02",
                    "slug": "itinerary02",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                ,
                
                    "id": "12",
                    "title": "Itinerary Image 03",
                    "slug": "itinerary03",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quod iam a me expectare noli. Non igitur bene. Ego quoque, inquit, didicerim libentius si quid attuleris, quam te reprehenderim.",
                    "byline": "Prabidhee Innovations / Sample Images",
                    "deleted_at": null
                
            ],
            "featured_image_url": "https://travoyay.com/gallery/place01.jpg"
        
    

【问题讨论】:

您想将 JSON 与 Object 进行匹配。看租:***.com/questions/45189282/… 【参考方案1】:

您使用来自 dart:convertjsonParse 将 JSON 解析为 Dart 映射和列表

例子:

String myJsonSource = ....;
var jsonData = jsonParse(myJsonSource);
for (var imageData in jsonData["data"]["images"]) 
  // imageData is a Map<String, dynamic>

  // You can use the `imageData` values in any way you want, 
  // for example if you have an `Image` class, you can do:
  var image = Image(
    id: imageData["id"], 
    title: imageData["title"],
    slug: imageData["slug"],
    description: imageData["description"]);

  // or
  var image2 = Image.fromJson(imageData);

  // do something with image.

您必须自己编写Image 类,可能是:

class Image 
  final String id;
  final String title;
  final String slug;
  final String description;
  Image(this.id, this.title, this.slug, this.description);
  factory Image.fromJson(Map<String, Object> imageData) =>
     Image(id: imageData["id"], title: imageData["title"],
         slug: imageData["slug"], description: imageData["description"]);

【讨论】:

【参考方案2】:

您需要创建 Data 和 Image 类。之后,只需将图像数组属性添加到 Data 类即可。

【讨论】:

以上是关于解析嵌套的 Json 数据结构?的主要内容,如果未能解决你的问题,请参考以下文章

c#中怎么解析多层json数据

使用 Codable 解析嵌套的 JSON 数据

layui如何解析多层嵌套json数据

解析 Json 数据。嵌套对象给出错误

多层嵌套json类型数据解析

IOS JSON解析嵌套数据