4

I'm stuck with jsoncpp. I would like to create an array like this:

"Cords": [{"x": 10, "y": 20}, {"x": 70, "y": 40}, {"x": 15, "y": 65}]

I managed to do the regular stuff with jsoncpp (see below) but I am stuck in this case of making a JSON array.

Json::Value event;

event["name"] = "Joe";
event["Direction"]["left"]["x"] = "1338";
event["Direction"]["right"]["x"] = "1337";

Edit:
I want to print it all within event.
I do not want to print cords separately.

2

2 Answers 2

5

You need to use the int overload of operator[] to define an array

Json::Value coord(int x, int y)
{
    Json::Value result;
    result["x"] = x;
    result["y"] = y;
    return result;    
}

void make_event(Json::Value & event)
{
    Json::Value & coords = event["Cords"];
    coords[0] = coord(10, 20);
    coords[1] = coord(70, 40);
    coords[2] = coord(15, 65);
}
Sign up to request clarification or add additional context in comments.

3 Comments

Looks good, @Caleth what would be the best practice if I would have to put this into a function that is void? Right now it says a function-definition is not allowed here before ‘{’ token
move the definition of coord outside the function that is using it
Works just like intended! Many thanks for your help!
1

May be something like this

Json::Value min;
Json::Value event;
event["x"] = 10;
event["y"] = 20;
min["Cords"] = event;



// Output to see the result

cout<<min.toStyledString()

1 Comment

Is it not possible to do it within Json::Value event; somehow? I do not want to print it alone as I am already including other data to event and printing it as a whole.

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.