【问题标题】:How to convert csv to json with arrays如何使用数组将csv转换为json
【发布时间】:2018-12-19 07:55:57
【问题描述】:

我有一个 csv 文件,其中包含我的应用程序的初始数据。

    {
   "id": 1,
   "topic": "Архитектура",
   "question": "Как называется буддийское архитектурное культовое сооружение?",
   "rightanswer": "Ступа",
   "wronganswer1": "Баба",
   "wronganswer2": "Яга",
   "wronganswer3": "Метла",
   "passed": false,
   "right": false
 },

我需要用“答案”数组将它解析为 json,我有什么选择?

结果应该是这样的:

 {
   "id": 1,
   "topic": "Архитектура",
   "question": "Как называется буддийское архитектурное культовое сооружение?",
   "answers":[
        "Ступа",
        "Баба",
        "Яга",
        "Метла" ],
   "passed": false,
   "right": false
 }

【问题讨论】:

    标签: java android arrays json csv


    【解决方案1】:

    您的方向几乎是正确的,但您必须使用 JSONArray 来获取答案,而不是直接将它们添加到具有名称的对象中。

    你可以有一个 if 你将在其中检查 key 是否包含答案字符串,然后你可以添加到 JSONArray 中,否则将该键和值添加到 JSONObject 中,并在完成后将这个 JSONArray 与关键答案添加到主对象中所有字段。

    此逻辑将使您的逻辑保持灵活。

    它将帮助您实现您的愿望 JSON。

    编辑:如果可以的话,我建议你改变你的 excel 结构。您应该在单个列中包含所有可能的选项(例如 opt1、opt2、opt3、opt4),并在另一列中正确答案,以便在您的 excel 设计和代码中获得简单性和灵活性。

    【讨论】:

      【解决方案2】:

      我正在使用gson

          String str = "{\r\n" + 
                  "   \"id\": 1,\r\n" + 
                  "   \"topic\": \"Архитектура\",\r\n" + 
                  "   \"question\": \"Как называется буддийское архитектурное культовое сооружение?\",\r\n" + 
                  "   \"rightanswer\": \"Ступа\",\r\n" + 
                  "   \"wronganswer1\": \"Баба\",\r\n" + 
                  "   \"wronganswer2\": \"Яга\",\r\n" + 
                  "   \"wronganswer3\": \"Метла\",\r\n" + 
                  "   \"passed\": false,\r\n" + 
                  "   \"right\": false\r\n" + 
                  " }"; //<== your json input
      
          JsonParser parser = new JsonParser();
          JsonObject input = parser.parse(str).getAsJsonObject(); //parser you Json to object
          JsonObject output =  new JsonObject();//my new jsonOutput
          output.add("id", input.get("id"));
          //other field .....
      
          //the trick start here
          JsonArray answer = new JsonArray();
          answer.add(input.get("rightanswer"));
          answer.add(input.get("wronganswer1"));
          answer.add(input.get("wronganswer2"));
          answer.add(input.get("wronganswer3"));
          output.add("answers", answer);
      
          System.out.println(output.toString());
      

      结果

      {"id":1,"answers":["Ступа","Баба","Яга","Метла"]} // to lazy to parse other field sorry
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2016-11-09
        • 2017-09-07
        • 2018-05-23
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        相关资源
        最近更新 更多