我在json中合并对象时遇到问题。我正在使用jansson库和普通c语言,我不允许使用其他任何东西。我已阅读文档和Api参考。链接:https://jansson.readthedocs.io/en/2.9/在这种情况下,建议使用:int json_object_update(json_t * object,json_t * other)。有3种不同类型的简单更新,update_existing,update_missing。他们都没有给我我需要的结果。我正在使用linux。这是我的程序代码,它也为argv验证和代码,在这种情况下不使用错误:
int main(int argc, char *argv[]) {
json_error_t error;
json_t *jFile;
json_t *File;
int dFile;
int i;
jFile = json_load_file("test1",0, &error);
if(jFile == NULL)
{
printf("Error opening test1");
return(-1);
}
File = json_load_file("test2",0, &error);
if(File == NULL)
{
printf("Error opening test2");
return(-1);
}
if( json_object_update_missing(jFile,File) < 0){
return(-1);
}
if( json_dump_file(jFile, "out2.json", JSON_INDENT(3)) < 0){
return(-1);
}
if(!jFile){
printf( "argv[ %d ] = %s\n", i, argv[ i ] );
fprintf(stderr, "error on line: %d column: %d position: %d\n %s\n",
error.line, error.column,
error.position, error.text);
}
else{
printf( "argv[ %d ] = %s\n", i, argv[ i ] );
printf("The loaded JSON file is valid\n"); }
return (0);
}
例如,如果我有这个(test1):
{
"radio": {
"Status" : {
"tx_freq" : "1000",
"rx_freq" : "1000",
"atpc_rxmax" : "101"
}
}
}
和这个(test2)
{
"radio": {
"Status" : {
"tx_freq" : "1000",
"rx_freq" : "1000",
"new_one" : "10"
}
}
}
我想要
{
"radio": {
"Status" : {
"tx_freq" : "1000",
"rx_freq" : "1000",
"atpc_rxmax" : "101",
"new_one" : "10"
}
}
}
如果我使用任何更新变体执行我的程序,它将只替换不同的对象值,或者它们将保持不变,但我只是想添加它们。我是新手。此时我被困住了,所提供的任何帮助都会对我有所帮助,即使这意味着不使用janssson提供的Api。