在j中将json对象与jansson合并

时间:2017-02-13 14:02:26

标签: c json

我在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。

0 个答案:

没有答案
相关问题