Exception when trying to insert my json object inside json file
marfixdev opened this issue · comments
Description
I'm trying to append my json object to inside a json file.
Reproduction steps
Bug occurs when trying to .insert()
Expected vs. actual results
This is how my json file looks like
{ "Base3": [ { "Name": "Base3", "X": 69, "Y": 999, "Z": 999 } ], "Base4": [ { "Name": "Base4", "X": 69, "Y": 999, "Z": 999 } ], "Base5": [ { "Name": "Base5", "X": 69, "Y": 999, "Z": 999 } ] }
What I expected ;
{ "Base3": [ { "Name": "Base3", "X": 69, "Y": 999, "Z": 999 } ], "Base4": [ { "Name": "Base4", "X": 69, "Y": 999, "Z": 999 } ], "Base5": [ { "Name": "Base5", "X": 69, "Y": 999, "Z": 999 } ], "Base6": [ { "Name": "Base6", "X": 22, "Y": 33, "Z": 11 } ] }
Minimal code example
using Json = nlohmann::json;
int main()
{
Json Data;
std::string Name = "Base6";
float xx = 22;
float yy = 33;
float zz = 11;
Data[Name]["Name"] = Name;
Data[Name]["X"] = xx;
Data[Name]["Y"] = yy;
Data[Name]["Z"] = zz;
std::fstream filewrite;
filewrite.open("coords.json", std::ios::out | std::ios::in);
Json existingjson = Json::parse(filewrite);
filewrite.seekg(0, filewrite.beg);
existingjson.insert(existingjson.begin(), Data);
filewrite << existingjson;
}
Error messages
Unhandled exception at 0x00007FF8101F565C in JSON.exe: Microsoft C++ exception: nlohmann::json_abi_v3_11_2::detail::type_error at memory location 0x000000000014FC80.
Compiler and operating system
MSVC 14.38 / WINDOWS11
Library version
3.11.2
Validation
- The bug also occurs if the latest version from the
develop
branch is used. - I can successfully compile and run the unit tests.
json::insert()
only operates on arrays, not objects in the form you used. (Form (1) at the API documentation.). Only Form (5) of insert()
is for inserting into objects.
You should be using json::update()
.
The type_error exception should provide more information in the what
string. If you print it, it should probably indicate what @nomadwolf0 wrote.
@marfixdev Can I close this issue?