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

时间:2018-12-19 07:55:57

标签: java android arrays json csv

我有一个带有初始数据的csv文件,用于我的应用程序。

csv file

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

我需要使用“答案”数组将其解析为json,我有哪些选择?

结果应该是这样的:

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

2 个答案:

答案 0 :(得分:2)

您的方向几乎是正确的,但是您必须使用JSONArray进行回答,而不是直接使用名称将其添加到对象中。

您可以使用if来检查键是否包含答案字符串,然后可以将其添加到JSONArray中,或者将该键和值添加到JSONObject中,并通过添加完成后将此JSONArray和键答案添加到主对象中所有字段。

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

它将帮助您实现所需的JSON。

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

答案 1 :(得分:1)

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

希望有帮助