Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party CJSON
提交
fcbeb1c3
T
Third Party CJSON
项目概览
OpenHarmony
/
Third Party CJSON
大约 1 年 前同步成功
通知
6
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party CJSON
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fcbeb1c3
编写于
10月 11, 2016
作者:
M
Max Bruckner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reformatting: test.c
上级
1822521a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
264 addition
and
120 deletion
+264
-120
test.c
test.c
+264
-120
未找到文件。
test.c
浏览文件 @
fcbeb1c3
...
...
@@ -27,125 +27,269 @@
/* Parse text to JSON, then render back to text, and print! */
void
doit
(
char
*
text
)
{
char
*
out
;
cJSON
*
json
;
json
=
cJSON_Parse
(
text
);
if
(
!
json
)
{
printf
(
"Error before: [%s]
\n
"
,
cJSON_GetErrorPtr
());}
else
{
out
=
cJSON_Print
(
json
);
cJSON_Delete
(
json
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
}
char
*
out
;
cJSON
*
json
;
json
=
cJSON_Parse
(
text
);
if
(
!
json
)
{
printf
(
"Error before: [%s]
\n
"
,
cJSON_GetErrorPtr
());
}
else
{
out
=
cJSON_Print
(
json
);
cJSON_Delete
(
json
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
}
}
/* Read a file, parse, render back, etc. */
void
dofile
(
char
*
filename
)
{
FILE
*
f
;
long
len
;
char
*
data
;
FILE
*
f
;
long
len
;
char
*
data
;
f
=
fopen
(
filename
,
"rb"
);
fseek
(
f
,
0
,
SEEK_END
);
len
=
ftell
(
f
);
fseek
(
f
,
0
,
SEEK_SET
);
data
=
(
char
*
)
malloc
(
len
+
1
);
fread
(
data
,
1
,
len
,
f
);
data
[
len
]
=
'\0'
;
fclose
(
f
);
doit
(
data
);
free
(
data
);
/* open in read binary mode */
f
=
fopen
(
filename
,
"rb"
);
/* get the length */
fseek
(
f
,
0
,
SEEK_END
);
len
=
ftell
(
f
);
fseek
(
f
,
0
,
SEEK_SET
);
data
=
(
char
*
)
malloc
(
len
+
1
);
fread
(
data
,
1
,
len
,
f
);
data
[
len
]
=
'\0'
;
fclose
(
f
);
doit
(
data
);
free
(
data
);
}
/* Used by some code below as an example datatype. */
struct
record
{
const
char
*
precision
;
double
lat
,
lon
;
const
char
*
address
,
*
city
,
*
state
,
*
zip
,
*
country
;
};
struct
record
{
const
char
*
precision
;
double
lat
;
double
lon
;
const
char
*
address
;
const
char
*
city
;
const
char
*
state
;
const
char
*
zip
;
const
char
*
country
;
};
/* Create a bunch of objects as demonstration. */
void
create_objects
()
{
cJSON
*
root
,
*
fmt
,
*
img
,
*
thm
,
*
fld
;
char
*
out
;
int
i
;
/* declare a few. */
/* Our "days of the week" array: */
const
char
*
strings
[
7
]
=
{
"Sunday"
,
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
};
/* Our matrix: */
int
numbers
[
3
][
3
]
=
{{
0
,
-
1
,
0
},{
1
,
0
,
0
},{
0
,
0
,
1
}};
/* Our "gallery" item: */
int
ids
[
4
]
=
{
116
,
943
,
234
,
38793
};
/* Our array of "records": */
struct
record
fields
[
2
]
=
{
{
"zip"
,
37
.
7668
,
-
1.223959e+2
,
""
,
"SAN FRANCISCO"
,
"CA"
,
"94107"
,
"US"
},
{
"zip"
,
37
.
371991
,
-
1.22026e+2
,
""
,
"SUNNYVALE"
,
"CA"
,
"94085"
,
"US"
}};
volatile
double
zero
=
0
.
0
;
/* Here we construct some JSON standards, from the JSON site. */
/* Our "Video" datatype: */
root
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
"name"
,
cJSON_CreateString
(
"Jack (
\"
Bee
\"
) Nimble"
));
cJSON_AddItemToObject
(
root
,
"format"
,
fmt
=
cJSON_CreateObject
());
cJSON_AddStringToObject
(
fmt
,
"type"
,
"rect"
);
cJSON_AddNumberToObject
(
fmt
,
"width"
,
1920
);
cJSON_AddNumberToObject
(
fmt
,
"height"
,
1080
);
cJSON_AddFalseToObject
(
fmt
,
"interlace"
);
cJSON_AddNumberToObject
(
fmt
,
"frame rate"
,
24
);
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Print to text, Delete the cJSON, print it, release the string. */
/* Our "days of the week" array: */
root
=
cJSON_CreateStringArray
(
strings
,
7
);
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Our matrix: */
root
=
cJSON_CreateArray
();
for
(
i
=
0
;
i
<
3
;
i
++
)
cJSON_AddItemToArray
(
root
,
cJSON_CreateIntArray
(
numbers
[
i
],
3
));
/* cJSON_ReplaceItemInArray(root,1,cJSON_CreateString("Replacement")); */
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Our "gallery" item: */
root
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
"Image"
,
img
=
cJSON_CreateObject
());
cJSON_AddNumberToObject
(
img
,
"Width"
,
800
);
cJSON_AddNumberToObject
(
img
,
"Height"
,
600
);
cJSON_AddStringToObject
(
img
,
"Title"
,
"View from 15th Floor"
);
cJSON_AddItemToObject
(
img
,
"Thumbnail"
,
thm
=
cJSON_CreateObject
());
cJSON_AddStringToObject
(
thm
,
"Url"
,
"http:/*www.example.com/image/481989943"
);
cJSON_AddNumberToObject
(
thm
,
"Height"
,
125
);
cJSON_AddStringToObject
(
thm
,
"Width"
,
"100"
);
cJSON_AddItemToObject
(
img
,
"IDs"
,
cJSON_CreateIntArray
(
ids
,
4
));
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Our array of "records": */
root
=
cJSON_CreateArray
();
for
(
i
=
0
;
i
<
2
;
i
++
)
{
cJSON_AddItemToArray
(
root
,
fld
=
cJSON_CreateObject
());
cJSON_AddStringToObject
(
fld
,
"precision"
,
fields
[
i
].
precision
);
cJSON_AddNumberToObject
(
fld
,
"Latitude"
,
fields
[
i
].
lat
);
cJSON_AddNumberToObject
(
fld
,
"Longitude"
,
fields
[
i
].
lon
);
cJSON_AddStringToObject
(
fld
,
"Address"
,
fields
[
i
].
address
);
cJSON_AddStringToObject
(
fld
,
"City"
,
fields
[
i
].
city
);
cJSON_AddStringToObject
(
fld
,
"State"
,
fields
[
i
].
state
);
cJSON_AddStringToObject
(
fld
,
"Zip"
,
fields
[
i
].
zip
);
cJSON_AddStringToObject
(
fld
,
"Country"
,
fields
[
i
].
country
);
}
/* cJSON_ReplaceItemInObject(cJSON_GetArrayItem(root,1),"City",cJSON_CreateIntArray(ids,4)); */
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
root
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
root
,
"number"
,
1
.
0
/
zero
);
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* declare a few. */
cJSON
*
root
;
cJSON
*
fmt
;
cJSON
*
img
;
cJSON
*
thm
;
cJSON
*
fld
;
char
*
out
;
int
i
;
/* Our "days of the week" array: */
const
char
*
strings
[
7
]
=
{
"Sunday"
,
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
};
/* Our matrix: */
int
numbers
[
3
][
3
]
=
{
{
0
,
-
1
,
0
},
{
1
,
0
,
0
},
{
0
,
0
,
1
}
};
/* Our "gallery" item: */
int
ids
[
4
]
=
{
116
,
943
,
234
,
38793
};
/* Our array of "records": */
struct
record
fields
[
2
]
=
{
{
"zip"
,
37
.
7668
,
-
1.223959e+2
,
""
,
"SAN FRANCISCO"
,
"CA"
,
"94107"
,
"US"
},
{
"zip"
,
37
.
371991
,
-
1.22026e+2
,
""
,
"SUNNYVALE"
,
"CA"
,
"94085"
,
"US"
}
};
volatile
double
zero
=
0
.
0
;
/* Here we construct some JSON standards, from the JSON site. */
/* Our "Video" datatype: */
root
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
"name"
,
cJSON_CreateString
(
"Jack (
\"
Bee
\"
) Nimble"
));
cJSON_AddItemToObject
(
root
,
"format"
,
fmt
=
cJSON_CreateObject
());
cJSON_AddStringToObject
(
fmt
,
"type"
,
"rect"
);
cJSON_AddNumberToObject
(
fmt
,
"width"
,
1920
);
cJSON_AddNumberToObject
(
fmt
,
"height"
,
1080
);
cJSON_AddFalseToObject
(
fmt
,
"interlace"
);
cJSON_AddNumberToObject
(
fmt
,
"frame rate"
,
24
);
/* Print to text */
out
=
cJSON_Print
(
root
);
/* Delete the cJSON */
cJSON_Delete
(
root
);
/* print it */
printf
(
"%s
\n
"
,
out
);
/* release the string */
free
(
out
);
/* Our "days of the week" array: */
root
=
cJSON_CreateStringArray
(
strings
,
7
);
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Our matrix: */
root
=
cJSON_CreateArray
();
for
(
i
=
0
;
i
<
3
;
i
++
)
{
cJSON_AddItemToArray
(
root
,
cJSON_CreateIntArray
(
numbers
[
i
],
3
));
}
/* cJSON_ReplaceItemInArray(root, 1, cJSON_CreateString("Replacement")); */
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Our "gallery" item: */
root
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
"Image"
,
img
=
cJSON_CreateObject
());
cJSON_AddNumberToObject
(
img
,
"Width"
,
800
);
cJSON_AddNumberToObject
(
img
,
"Height"
,
600
);
cJSON_AddStringToObject
(
img
,
"Title"
,
"View from 15th Floor"
);
cJSON_AddItemToObject
(
img
,
"Thumbnail"
,
thm
=
cJSON_CreateObject
());
cJSON_AddStringToObject
(
thm
,
"Url"
,
"http:/*www.example.com/image/481989943"
);
cJSON_AddNumberToObject
(
thm
,
"Height"
,
125
);
cJSON_AddStringToObject
(
thm
,
"Width"
,
"100"
);
cJSON_AddItemToObject
(
img
,
"IDs"
,
cJSON_CreateIntArray
(
ids
,
4
));
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
/* Our array of "records": */
root
=
cJSON_CreateArray
();
for
(
i
=
0
;
i
<
2
;
i
++
)
{
cJSON_AddItemToArray
(
root
,
fld
=
cJSON_CreateObject
());
cJSON_AddStringToObject
(
fld
,
"precision"
,
fields
[
i
].
precision
);
cJSON_AddNumberToObject
(
fld
,
"Latitude"
,
fields
[
i
].
lat
);
cJSON_AddNumberToObject
(
fld
,
"Longitude"
,
fields
[
i
].
lon
);
cJSON_AddStringToObject
(
fld
,
"Address"
,
fields
[
i
].
address
);
cJSON_AddStringToObject
(
fld
,
"City"
,
fields
[
i
].
city
);
cJSON_AddStringToObject
(
fld
,
"State"
,
fields
[
i
].
state
);
cJSON_AddStringToObject
(
fld
,
"Zip"
,
fields
[
i
].
zip
);
cJSON_AddStringToObject
(
fld
,
"Country"
,
fields
[
i
].
country
);
}
/* cJSON_ReplaceItemInObject(cJSON_GetArrayItem(root, 1), "City", cJSON_CreateIntArray(ids, 4)); */
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
root
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
root
,
"number"
,
1
.
0
/
zero
);
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
printf
(
"%s
\n
"
,
out
);
free
(
out
);
}
int
main
(
int
argc
,
const
char
*
argv
[])
{
/* a bunch of json: */
char
text1
[]
=
"{
\n\"
name
\"
:
\"
Jack (
\\\"
Bee
\\\"
) Nimble
\"
,
\n\"
format
\"
: {
\"
type
\"
:
\"
rect
\"
,
\n\"
width
\"
: 1920,
\n\"
height
\"
: 1080,
\n\"
interlace
\"
: false,
\"
frame rate
\"
: 24
\n
}
\n
}"
;
char
text2
[]
=
"[
\"
Sunday
\"
,
\"
Monday
\"
,
\"
Tuesday
\"
,
\"
Wednesday
\"
,
\"
Thursday
\"
,
\"
Friday
\"
,
\"
Saturday
\"
]"
;
char
text3
[]
=
"[
\n
[0, -1, 0],
\n
[1, 0, 0],
\n
[0, 0, 1]
\n
]
\n
"
;
char
text4
[]
=
"{
\n
\"
Image
\"
: {
\n
\"
Width
\"
: 800,
\n
\"
Height
\"
: 600,
\n
\"
Title
\"
:
\"
View from 15th Floor
\"
,
\n
\"
Thumbnail
\"
: {
\n
\"
Url
\"
:
\"
http:/*www.example.com/image/481989943
\"
,
\n
\"
Height
\"
: 125,
\n
\"
Width
\"
:
\"
100
\"\n
},
\n
\"
IDs
\"
: [116, 943, 234, 38793]
\n
}
\n
}"
;
char
text5
[]
=
"[
\n
{
\n
\"
precision
\"
:
\"
zip
\"
,
\n
\"
Latitude
\"
: 37.7668,
\n
\"
Longitude
\"
: -122.3959,
\n
\"
Address
\"
:
\"\"
,
\n
\"
City
\"
:
\"
SAN FRANCISCO
\"
,
\n
\"
State
\"
:
\"
CA
\"
,
\n
\"
Zip
\"
:
\"
94107
\"
,
\n
\"
Country
\"
:
\"
US
\"\n
},
\n
{
\n
\"
precision
\"
:
\"
zip
\"
,
\n
\"
Latitude
\"
: 37.371991,
\n
\"
Longitude
\"
: -122.026020,
\n
\"
Address
\"
:
\"\"
,
\n
\"
City
\"
:
\"
SUNNYVALE
\"
,
\n
\"
State
\"
:
\"
CA
\"
,
\n
\"
Zip
\"
:
\"
94085
\"
,
\n
\"
Country
\"
:
\"
US
\"\n
}
\n
]"
;
char
text6
[]
=
"<!DOCTYPE html>"
int
main
(
int
argc
,
const
char
*
argv
[])
{
/* a bunch of json: */
char
text1
[]
=
"{
\n
"
"
\"
name
\"
:
\"
Jack (
\\\"
Bee
\\\"
) Nimble
\"
,
\n
"
"
\"
format
\"
: {
\"
type
\"
:
\"
rect
\"
,
\n
"
"
\"
width
\"
: 1920,
\n
"
"
\"
height
\"
: 1080,
\n
"
"
\"
interlace
\"
: false,
\"
frame rate
\"
: 24
\n
"
"}
\n
"
"}"
;
char
text2
[]
=
"[
\"
Sunday
\"
,
\"
Monday
\"
,
\"
Tuesday
\"
,
\"
Wednesday
\"
,
\"
Thursday
\"
,
\"
Friday
\"
,
\"
Saturday
\"
]"
;
char
text3
[]
=
"[
\n
"
" [0, -1, 0],
\n
"
" [1, 0, 0],
\n
"
" [0, 0, 1]
\n
"
"
\t
]
\n
"
;
char
text4
[]
=
"{
\n
"
"
\t\t\"
Image
\"
: {
\n
"
"
\t\t\t\"
Width
\"
: 800,
\n
"
"
\t\t\t\"
Height
\"
: 600,
\n
"
"
\t\t\t\"
Title
\"
:
\"
View from 15th Floor
\"
,
\n
"
"
\t\t\t\"
Thumbnail
\"
: {
\n
"
"
\t\t\t\t\"
Url
\"
:
\"
http:/*www.example.com/image/481989943
\"
,
\n
"
"
\t\t\t\t\"
Height
\"
: 125,
\n
"
"
\t\t\t\t\"
Width
\"
:
\"
100
\"\n
"
"
\t\t\t
},
\n
"
"
\t\t\t\"
IDs
\"
: [116, 943, 234, 38793]
\n
"
"
\t\t
}
\n
"
"
\t
}"
;
char
text5
[]
=
"[
\n
"
"
\t
{
\n
"
"
\t
\"
precision
\"
:
\"
zip
\"
,
\n
"
"
\t
\"
Latitude
\"
: 37.7668,
\n
"
"
\t
\"
Longitude
\"
: -122.3959,
\n
"
"
\t
\"
Address
\"
:
\"\"
,
\n
"
"
\t
\"
City
\"
:
\"
SAN FRANCISCO
\"
,
\n
"
"
\t
\"
State
\"
:
\"
CA
\"
,
\n
"
"
\t
\"
Zip
\"
:
\"
94107
\"
,
\n
"
"
\t
\"
Country
\"
:
\"
US
\"\n
"
"
\t
},
\n
"
"
\t
{
\n
"
"
\t
\"
precision
\"
:
\"
zip
\"
,
\n
"
"
\t
\"
Latitude
\"
: 37.371991,
\n
"
"
\t
\"
Longitude
\"
: -122.026020,
\n
"
"
\t
\"
Address
\"
:
\"\"
,
\n
"
"
\t
\"
City
\"
:
\"
SUNNYVALE
\"
,
\n
"
"
\t
\"
State
\"
:
\"
CA
\"
,
\n
"
"
\t
\"
Zip
\"
:
\"
94085
\"
,
\n
"
"
\t
\"
Country
\"
:
\"
US
\"\n
"
"
\t
}
\n
"
"
\t
]"
;
char
text6
[]
=
"<!DOCTYPE html>"
"<html>
\n
"
"<head>
\n
"
" <meta name=
\"
viewport
\"
content=
\"
width=device-width, initial-scale=1
\"
>
\n
"
...
...
@@ -162,24 +306,24 @@ int main (int argc, const char * argv[]) {
"</body>
\n
"
"</html>
\n
"
;
/* Process each json textblock by parsing, then rebuilding: */
doit
(
text1
);
doit
(
text2
);
doit
(
text3
);
doit
(
text4
);
doit
(
text5
);
/* Process each json textblock by parsing, then rebuilding: */
doit
(
text1
);
doit
(
text2
);
doit
(
text3
);
doit
(
text4
);
doit
(
text5
);
doit
(
text6
);
/* Parse standard testfiles: */
/*
dofile("../../tests/test1"); */
/*
dofile("../../tests/test2"); */
/*
dofile("../../tests/test3"); */
/*
dofile("../../tests/test4"); */
/*
dofile("../../tests/test5"); */
/*
dofile("../../tests/test6"); */
/* Parse standard testfiles: */
/*
dofile("../../tests/test1"); */
/*
dofile("../../tests/test2"); */
/*
dofile("../../tests/test3"); */
/*
dofile("../../tests/test4"); */
/*
dofile("../../tests/test5"); */
/*
dofile("../../tests/test6"); */
/* Now some samplecode for building objects concisely: */
create_objects
();
/* Now some samplecode for building objects concisely: */
create_objects
();
return
0
;
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录