1

I have a csv file with an initial data for my app.

csv file

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

I need to parse it to json with the array of "answers", what options i have ?

Result should be like that :

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

2 Answers 2

2

You are almost in the right direction but you have to use JSONArray for answers rather then adding them directly into the object with the name.

you can have an if where you will check if key contains the answer string then you can add into the JSONArray else add that key and value into JSONObject and add this JSONArray with the key answers into the main object once you done by adding all field.

This logic will keep your logic flexible.

it will help you to achieve your desire JSON.

EDIT: I would suggest you change your excel structure if you can. you should have all possible options in a single column (such as opt1,opt2,opt3,opt4) and correct answers in another column to gain simplicity and flexibility in your excel designa nd code.

Sign up to request clarification or add additional context in comments.

Comments

1

I'm using 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());

result

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

Hope it helps

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.