json icon indicating copy to clipboard operation
json copied to clipboard

Exception when trying to insert my json object inside json file

Open hern0s-dev opened this issue 1 year ago • 4 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

hern0s-dev avatar Dec 11 '23 00:12 hern0s-dev

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().

nomadwolf0 avatar Dec 11 '23 01:12 nomadwolf0

The type_error exception should provide more information in the what string. If you print it, it should probably indicate what @nomadwolf0 wrote.

nlohmann avatar Dec 11 '23 09:12 nlohmann

I tried to reproduce the error and it is showing a good exception actually. image

edvardsanta avatar Dec 11 '23 14:12 edvardsanta

@marfixdev Can I close this issue?

nlohmann avatar Dec 14 '23 08:12 nlohmann