繁体   English   中英

如何使用数组将csv转换为json

[英]How to convert csv to json with arrays

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

csv文件

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

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

结果应该是这样的:

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

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

您可以在其中检查密钥是否包含答案字符串,然后您可以添加到JSONArray中,然后将该密钥和值添加到JSONObject中,并在完成后通过添加所有字段将带有密钥答案的JSONArray添加到主对象中。

这种逻辑将保持您的逻辑灵活性。

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

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

我正在使用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

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM