Home > other >  How do i read/write JSON with c ?
How do i read/write JSON with c ?

Time:01-13

I would like to know how to read/write a JSON file using C . I will be using this file to store player info & setting for a simple game I'm making. It's nothing fancy, just a console number guessing game, but I just use it to learn stuff.

I have to know how to read & write specific parts of a JSON.

CodePudding user response:

Using a library, it can be done quite easily:

#include <nlohmann/json.hpp>
#include <iostream>

int main() {
    // read file
    auto json = nlohmann::json::parse("{\"value1\": \"string\"}");

    // mutate the json
    json["value1"] = "new string";

    // write to a stream, or the same file
    std::cout << json; // print the json
}

C don't have the built-ins for dealing with json. You can implement your own json data structure, or use one available like nlohmann/json or simdjson

You could create your own parser using pure C with the standard library only, but I would advise against.

CodePudding user response:

Using struct_mapping it can be done:

#include "struct_mapping/struct_mapping.h"

#include <fstream>
#include <iostream>
#include <sstream>
#include <string>

struct Planet
{
    std::string name;
    double mass;
    bool populated;
};

int main()
{
    struct_mapping::reg(&Planet::name, "name");
    struct_mapping::reg(&Planet::mass, "mass");
    struct_mapping::reg(&Planet::populated, "populated");

    Planet planet;

    auto stream = std::ifstream("planet.json");
    struct_mapping::map_json_to_struct(planet, stream);

    planet.name = "Mars";
    planet.populated = false;

    std::ostringstream out_json_data;
    struct_mapping::map_struct_to_json(planet, out_json_data, "  ");

    std::cout << out_json_data.str() << std::endl;
}

Data file example

{
  "name": "Earth",
  "mass": 1234,
  "populated": true
}
  •  Tags:  
  • Related