Ejemplo n.º 1
0
/* Recursively print a Json-object */
static void json_print (json_t *r)
{
	json_t *v;

	for (v = r; v != NULL; v = v->next) {

		if (v->label) printf ("\"%s\": ", v->label);

		switch (v->type) {
		case JSON_TYPE_STR:
			printf ("\"%s\"", v->val.str);
			break;
		case JSON_TYPE_OBJECT:
			printf ("{ ");
			json_print (v->val.obj);
			printf (" }");
			break;
		case JSON_TYPE_ARRAY:
			printf ("[ ");
			json_print (v->val.obj);
			printf (" ]");
			break;
		case JSON_TYPE_INT:
			printf ("%ld", v->val.num);
			break;
		case JSON_TYPE_DOUBLE:
			printf ("%lf", v->val.f);
			break;
		case JSON_TYPE_EMPTY:
			printf ("(empty)");
			break;
		case JSON_TYPE_FALSE:
			printf ("false");
			break;
		case JSON_TYPE_TRUE:
			printf ("true");
			break;
		case JSON_TYPE_NULL:
			printf ("null");
			break;
		default:
			printf ("unhandled type = %d\n", v->type);
			break;
		}

		if (v->next != NULL)
			printf (", ");
	}
}
Ejemplo n.º 2
0
int
main (int argc, char **argv)
{
	int size;
	FILE *f;
	char *filename, *jsonstr;

	filename = argv[1];
	if ((f = fopen (filename, "r")) == NULL) {
		fprintf (stderr, "error opening file\n");
		return (1);
	}

	fseek (f, 0, SEEK_END);
	size = ftell (f);
	fseek (f, 0, SEEK_SET);
	if ((jsonstr = malloc (size+1)) == NULL) {
		fprintf (stderr, "out of memory\n");
		return (1);
	}
	size = fread (jsonstr, 1, size, f);
	jsonstr[size] = 0;

	json_print (json_decode (jsonstr));

	return (0);
}
Ejemplo n.º 3
0
static void json_destroy(struct formatter *fmt)
{
	struct json_formatter_data *priv = fmt->priv;
	yajl_gen_array_close(priv->yajl);
	json_print(fmt->f, priv->yajl);
	yajl_gen_free(priv->yajl);
}
int main(int argc, char* argv[]) {

    (void) argc;
    (void) argv;

    char* string =
	"{ "
	"\"sitename\": "
	"\"joys of programming\", "
	"\"categories\": "
	"[ \"c\", [ \"c++\", \"c\" ], \"java\", \"PHP\" ], "
	"\"author-details\": "
	"{ \"admin\": false, \"name\": \"Joys of Programming\", \"Number of Posts\": 10 }"
	" }";

    printf("input: %s\n", string);

    json_object* jobj = json_tokener_parse(string);

    printf("jobj:  %s\n", json_object_to_json_string(jobj));

    json_print(jobj, 0);

    json_object_put(jobj);

    return EXIT_SUCCESS;

}
Ejemplo n.º 5
0
int main(int argc, char *argv[])
{
    JSONNode *root = json_loads_from_data(JSON);
    if (root == NULL) {
        printf("invalid format!\n");
        return -1;
    }
    json_print(root, 0);
    json_node_free(root);
    return 0;
}
Ejemplo n.º 6
0
int
main (int argc, char **argv)
{
	struct json *arr;

	arr = json_make_arr ();

	add_bday (arr, "atwbday.json");
	add_bday (arr, "epwbday.json");
	add_bday (arr, "werbday.json");
	add_bday (arr, "pacebday.json");

	json_print (arr);

	return (0);
}
Ejemplo n.º 7
0
int main(int argc,char *argv[])
  {
  FILE *f=fopen(argv[1],"r");

  // Parse XML file
  struct foo *b=(struct foo *)xml_parse(f,"root",&myschema,metafind(&myschema, "foo"),1);
  struct item *i;

  // Access values in foo
  printf("root->val = %d\n",b->val);
  printf("root->val_name = %s\n",b->val_name);
  printf("root->items->val = %d\n",b->items->val);
  printf("root->items->next->val = %d\n",b->items->next->val);
  printf("root->items->next->next->val = %d\n",b->items->next->next->val);

  // Print in various formats
  xml_print(stdout,"root",0,(struct base *)b);

  lisp_print(stdout,"root",0,(struct base *)b);

  lisp_print_untagged(stdout,"root",0,(struct base *)b);

  indent_print(stdout,"root",0,(struct base *)b);

  indent_print_untagged(stdout,"root",0,(struct base *)b);

  json_print(stdout,NULL,0,(struct base *)b,0);

  // Create a database within C
  b=mk(&myschema, "foo");
  b->val=10;
  b->val_name=strdup("Hello");

  // Build list
  i=b->items=mk(&myschema, "item");
  i->val=7;
  i=i->next=mk(&myschema, "item");
  i->val=8;
  i=i->next=mk(&myschema, "item");
  i->val=9;

  // Print it
  xml_print(stdout,"root",0,(struct base *)b);

  return 0;
  }
Ejemplo n.º 8
0
static int json_format(struct formatter *fmt, struct recordset *rset)
{
	struct record *r;
	struct json_formatter_data *priv = fmt->priv;
	yajl_gen_map_open(priv->yajl);
        int repeat = 0;
	for_each_record(r, rset) {
		if(r->type != RECORD_TYPE_RSET || !repeat)
			yajl_gen_string(priv->yajl, (unsigned char*)r->name, r->len_n-1);
                if(r->type != RECORD_TYPE_RSET) {
                  if(repeat) yajl_gen_array_close(priv->yajl);
                repeat = 0;
                }

		switch(r->type) {
		case RECORD_TYPE_STRING:
			yajl_gen_string(priv->yajl, (unsigned char*)r->value_str, r->len_v-1);
			break;
		case RECORD_TYPE_INT:
			yajl_gen_integer(priv->yajl, r->value_int);
			break;
		case RECORD_TYPE_UINT:
		case RECORD_TYPE_HEX:
			yajl_gen_integer(priv->yajl, r->value_uint);
			break;
		case RECORD_TYPE_DOUBLE:
			yajl_gen_double(priv->yajl, r->value_double);
			break;
		case RECORD_TYPE_RSET:
                  if(!repeat) yajl_gen_array_open(priv->yajl);
			json_format(fmt, r->value_rset);

			repeat = 1;
			break;
		default:
			break;
		}
	}
        if(repeat) yajl_gen_array_close(priv->yajl);
	yajl_gen_map_close(priv->yajl);
	json_print(fmt->f, priv->yajl);
	return 0;
}
Ejemplo n.º 9
0
__USE_LIBASN

int main(int argc, char *argv[])
{
	char buf[BUFSIZ];
	mmatic *mm = mmatic_create();
	xstr *xs = xstr_create("", mm);
	json *js = json_create(mm);

	while (fgets(buf, BUFSIZ, stdin))
		xstr_append(xs, buf);

	ut *parsed = json_parse(js, xstr_string(xs));
	if (ut_ok(parsed))
		printf("%s", json_print(js, parsed));
	else
		printf("%s\n", ut_err(parsed));

	return 0;
}
Ejemplo n.º 10
0
static void test_json (const char *name, const char *s)
{
	json_t *root;
	char   *txt;

	printf ("Test: %s\n", name);

	txt = strdup (s);
	root = json_from_string (txt, NULL);
	if (!root) {
		fprintf (stderr, "Parse failed\n");
		return;
	}

	json_print (root);
	printf ("\n");

	json_free (root);
	free (txt);
}
Ejemplo n.º 11
0
int main()
{
	JSON_Object root;
	JSON_Array arr;
	JSON_String *str;

	json_object_init(&root);

	json_object_set(&root, "a", json_string_new("str123"));
	//json_object_debug_hash(&root);
	json_object_set(&root, "b", json_number_new(123));
	//json_object_debug_hash(&root);

	json_array_init(&arr);
	json_array_append(&arr, json_boolean_true());
	json_array_append(&arr, json_boolean_true());
	json_array_append(&arr, json_boolean_false());
	json_array_append(&arr, json_null());

	json_object_set(&root, "c", &arr);
	//json_object_debug_hash(&root);
	str = json_value_to_string(&root, 0);
	json_value_unref(&root);

	json_print(json_string_cstr(str));
	json_value_unref(str);

#if 0
#   define print_size(T) printf("Size of '" #T "': %lu\n", sizeof(T))
	printf("==================================\n");
	print_size(JSON_Value);
	print_size(JSON_Null);
	print_size(JSON_Boolean);
	print_size(JSON_Number);
	print_size(JSON_String);
	print_size(JSON_Array);
	print_size(JSON_Object);
#endif

	return 0;
}
Ejemplo n.º 12
0
static inline void json_print(JSONNode * node, unsigned int tab)
{
    const char *name = json_node_get_name(node);
    if (name == NULL) {
        name = "NULL";
    }
    tab_print(tab);
    if (json_node_is_string(node)) {
        printf("%s=%s\n", name, json_string_get(node));
    } else if (json_node_is_false(node)) {
        printf("%s=FALSE\n", name);
    } else if (json_node_is_true(node)) {
        printf("%s=TRUE\n", name);
    } else if (json_node_is_int(node)) {
        printf("%s=%ld\n", name, json_int_get(node));
    } else if (json_node_is_float(node)) {
        printf("%s=%g\n", name, json_float_get(node));
    } else if (json_node_is_object(node) || json_node_is_array(node)) {
        JList *children = json_node_get_children(node);
        if (json_node_is_array(node)) {
            printf("%s=[\n", name);
        } else {
            printf("%s={\n", name);
        }
        while (children) {
            JSONNode *child = (JSONNode *) j_list_data(children);
            json_print(child, tab + 1);
            children = j_list_next(children);
        }
        tab_print(tab);
        if (json_node_is_array(node)) {
            printf("]\n");
        } else {
            printf("}\n");
        }
    } else {
        printf("%s=NULL\n", name);
    }
}
Ejemplo n.º 13
0
int main(void)
{
  int i;
  int x = 0;
  char *line;

  while ((line = csvgetline(stdin)) != NULL) {
    if (x == 0) {
      for (i = 0; i < csvnfield(); i++) {
        csvfield(i);
      }

      printf("{\n");
    } else {
      json_print(x);
    }

    if (x == 0) h_count = 1;
    x++;
  }

  printf("\n  }  \n}\n");
  return 0;
}
Ejemplo n.º 14
0
STATUS save_as_module(char *file_name)
{

	char tmp_dir[256];
	char conf_dir[256];
	char backup_dir[256];
	
	FILE *file;
	CONFIG_DATA_T *root;
	char *out;
	UINT8	module_id;

	STATUS ret = OK;
	
	int 	tmp_fd;



	if(file_name ==NULL)
		return USR_MODULE_ERR(E_PARAM);
	

	/*file name and dir*/
	sprintf(tmp_dir,"%s/%s",CONFI_DIR,"tmp_XXXXXX");
	sprintf(conf_dir,"%s/%s",CONFI_DIR,file_name);
	sprintf(backup_dir,"%s/%s",CONFI_DIR,".backup");


	/*make temp file*/
	tmp_fd = mkstemp (tmp_dir);
	if(tmp_fd <0)
	{
		//printf("mkstemp fd :%d\r\n",tmp_fd);
		return USR_MODULE_ERR(E_FAIL);
	}

	root = create_object();

	for(module_id=NULL_MODULE;module_id<MODULE_NUM;module_id++)
	{
		if(usr_module_arr[module_id] ==NULL ||usr_module_arr[module_id]->name ==NULL \
			||usr_module_arr[module_id]->module_save ==NULL)
		{
			continue;
		}

		//printf("Save %-38s    .........",usr_module_arr[module_id]->name);
		/*init ALL user  init  function*/
		if(usr_module_arr[module_id]->module_save !=NULL)
			ret = (*(usr_module_arr[module_id]->module_save))(root);
		
		//printf("[ %s ] \r\n",ret==OK ? "OK":"fail");
		
	}
	out=json_print(root);
	json_delete(root);
 
	/*write data to film  and close*/
	write (tmp_fd,  out, strlen(out));
	close(tmp_fd);


	/*unlink backup file dir*/
	unlink (backup_dir);

	/*link to config file*/
	link (conf_dir, backup_dir);
	

	/*sync data to device iO*/
	sync ();

	/*unlink config  file dir*/
	unlink (conf_dir);
	
	/*link to config file*/
	if (link (tmp_dir, conf_dir) != 0)
	{
		/*if link new file fail backup  old film*/
		link (backup_dir, tmp_dir);
		free(out);	
	       unlink (tmp_dir);
	       return USR_MODULE_ERR(E_FAIL);
	}

	/*unlink config  file dir*/
  	if (unlink (tmp_dir) != 0)
  	{
  		sync ();
  		free(out);
  		return USR_MODULE_ERR(E_NORSRC);
  	}

	/*sync data to device iO*/
	sync ();


	/*change file authority*/
	chmod(conf_dir,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
	
	//file_name = get_running_confing_name();	
	//rename(tmp_dir,conf_dir);
	
	free(out);
	
	return ret;	
}
Ejemplo n.º 15
0
int test_basic (void)
{
	json_t      *root;
	json_t      *o;
	json_t      *i;
	char        *str;
	const char  *s;
	int          n;
	double       d;
	int          boolval;

	str = "  {\"l1\" : 1111, "
		" \"l2\" : {\"l3\": {\"l4\": \"s2\", \"l5\": 2222 } }, "
		" \"l6\" : [1,2,3,4,5], "
		" \"l7\" : { \"l8\" : \"Hello World\" }, "
		" \"float\": 273.93,"
		" \"b1\": trUe,"
		" \"nil\": nulL,"
		" \"b2\": false} \n\t";
	str = strdup (str);

	root = json_from_string (str, NULL);
	assert (root);

	n = json_get_int (root, "l1", NULL);
	assert (n == 1111);

	d = json_get_double (root, "float", NULL);
	assert (d == 273.93);

	i = json_get_array (root, "l6", NULL);
	assert (i->type == JSON_TYPE_ARRAY);

	i = json_get_first (i);
	for (n = 0; i; n++, i = i->next) {
		int data[] = {1,2,3,4,5};
		assert (i->type == JSON_TYPE_INT);
		assert (i->val.num == data[n]);
	}

	o = json_get (root, "nil", NULL);
	assert (o->type == JSON_TYPE_NULL);

	o = json_get (root, "b1", NULL);
	assert (o->type == JSON_TYPE_TRUE);

	o = json_get (root, "b2", NULL);
	assert (o->type == JSON_TYPE_FALSE);
	
	boolval = json_get_bool (root, "b1", NULL);
	assert (boolval == 1);

	boolval = json_get_bool (root, "b2", NULL);
	assert (boolval == 0);

	boolval = json_get_bool (root, "nonexisting", NULL);
	assert (boolval == -1);

	o = json_get_object (root, "l7", NULL);
	assert (o);
	if (o) {
		s = json_get_string (o, "l8", NULL);
		printf ("str = %s\n", s);
	}

	printf ("\n");

	json_print (root);
	printf ("\n");

	json_free (root);
	free (str);
	return 0;
}