【问题标题】:Parsing json array having one-to- many relationship解析具有一对多关系的json数组
【发布时间】:2014-12-12 05:54:18
【问题描述】:

我有一个来自服务器的 JSON 数组,它有类别,每个类别有两个、三个问题,每个问题都有“是”和“否”形式的答案。

我创建了三个类,一个用于类别,一个用于问题,一个用于答案。类别类有问题数组列表,问题类有答案数组列表。

我需要获取类别名称,并使用类别名称填充微调器,然后从微调器中选择一个类别,所有与该类别相关的问题和答案都会出现。

我已经解析了 json,并用类别名称填充了微调器,但我需要知道如何将该类别与其相应的问题和答案进行映射。

JSON格式如下:

    [
    {     
     "categoryName": "color1",   
     "colorCategoryQuestions": [
     {

     "question": "Is it blue?",       
     "colorCategoryQuestionOptions": [
            {

                    "optionText": "Yes"

             },
            {

                    "optionText": "No"

             }
        ],       
      },
     {

         "question": "Is it red?",       
         "colorCategoryQuestionOptions": [
             {

                 "optionText": "Yes",

             },
             {

                    "optionText": "No",

            }
        ],       
      },

     ],

     },

     {     
             "categoryName": "color2",   
            "colorCategoryQuestions": [
           {

                "question": "Is it blue?",       
                "colorCategoryQuestionOptions": [
                 {

                    "optionText": "Yes"

               },
               {

                    "optionText": "No"

                }
          ],       
        },
      {

     "question": "Is it red?",       
     "colorCategoryQuestionOptions": [
             {

                 "optionText": "Yes",

             },
             {

                    "optionText": "No",

            }
        ],       
      },

     ],

    },

   ]

【问题讨论】:

  • 为什么不创建一个Questions 表,其中插入每个问题,categoryName 作为其中的一个字段。因此,一旦在微调器中选择了categoryName,您就可以从表中获取数据并显示它们
  • 您发布的 json 不是有效的 json(在 jsonlint.com 上验证时会出现问题)

标签: android json one-to-many server


【解决方案1】:

我可能会误会,但是只有一个类来表示类别、问题和答案的三元组不是更容易吗?例如:

public class QuizItem{

     private String category;
     private String question;
     private int answer;

     public QuizItem(String category, String question, int answer) {
          super();
          this.category = category;
          this.question = question;
          this.answer = answer;
}

...

那么所有的关联都已经链接了。您可以将这些作为对象存储在ArrayList 中,并遍历它以按类别提取您需要的内容等。也就是说,也许您甚至不需要类来对数据进行建模。也许您可以直接存储 JSON 对象,将它们粘贴在 ArrayList 中,然后使用标准 JSON 库工具遍历它以提取您需要的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多