• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "cJsonNapiH/cjsonnapi.h"
17 
getAddfalsetoobjTypeOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonOut)18 napi_value getAddfalsetoobjTypeOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonOut)
19 {
20     napi_status status;
21     const napi_extended_error_info *extended_error_info;
22     const char *tag = "[KH545_cJSON_AddFalseToObject]";
23     napi_value typeOut;
24     /* [NAPI_GEN]: 返回值是int32_t类型时,napi_create_int32 创建一个包含32位整数(int32_t)的js数值(Number)对象
25      * env: 当前环境的句柄
26      * value: 要准换成js数值的int32_t的值,这里以传入1为例,用例新增业务代码时可根据自身需求修改
27      * result: 指向napi_value的指针,这个指针会被设置为新创建的js数值对象
28      */
29     status = napi_create_int32(env, jsonOut->type, &typeOut);
30     if (status != napi_ok) {
31         getErrMessage(status, env, extended_error_info, "napi_create_int32", tag);
32         return nullptr;
33     }
34     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
35      * env: 当前环境的句柄
36      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
37      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
38      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
39      */
40     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "type", typeOut);
41     if (status != napi_ok) {
42         /* [NAPI_GEN]: 错误处理*/
43         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
44         return nullptr;
45     }
46     return cJSON_AddFalseToObjectOut;
47 }
48 
getAddfalsetoobjValuesintOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonOut)49 napi_value getAddfalsetoobjValuesintOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonOut)
50 {
51     napi_status status;
52     const napi_extended_error_info *extended_error_info;
53     const char *tag = "[KH545_cJSON_AddFalseToObject]";
54 
55     napi_value valueintOut;
56     /* [NAPI_GEN]: 返回值是int32_t类型时,napi_create_int32 创建一个包含32位整数(int32_t)的js数值(Number)对象
57      * env: 当前环境的句柄
58      * value: 要准换成js数值的int32_t的值,这里以传入1为例,用例新增业务代码时可根据自身需求修改
59      * result: 指向napi_value的指针,这个指针会被设置为新创建的js数值对象
60      */
61     status = napi_create_int32(env, jsonOut->valueint, &valueintOut);
62     if (status != napi_ok) {
63         getErrMessage(status, env, extended_error_info, "napi_create_int32", tag);
64         return nullptr;
65     }
66     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
67      * env: 当前环境的句柄
68      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
69      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
70      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
71      */
72     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "valueint", valueintOut);
73     if (status != napi_ok) {
74         /* [NAPI_GEN]: 错误处理*/
75         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
76         return nullptr;
77     }
78 
79     return cJSON_AddFalseToObjectOut;
80 }
81 
getAddfalsetoobjValuesdoubleOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonOut)82 napi_value getAddfalsetoobjValuesdoubleOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonOut)
83 {
84     napi_status status;
85     const napi_extended_error_info *extended_error_info;
86     const char *tag = "[KH545_cJSON_AddFalseToObject]";
87     napi_value valuedoubleOut;
88     /* [NAPI_GEN]: 返回值是double类型时,napi_create_double 创建一个包含双精度浮点数的js数值(Number)对象
89      * env: 当前环境的句柄
90      * value: 要传递给js的双精度浮点数值,这里以传入1.0为例,用例新增业务代码时可根据自身需求修改
91      * result: 指向napi_value的指针,这个指针会被设置为新创建的js数值对象
92      */
93     status = napi_create_double(env, jsonOut->valuedouble, &valuedoubleOut);
94     if (status != napi_ok) {
95         getErrMessage(status, env, extended_error_info, "napi_create_double", tag);
96         return nullptr;
97     }
98     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
99      * env: 当前环境的句柄
100      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
101      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
102      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
103      */
104     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "valuedouble", valuedoubleOut);
105     if (status != napi_ok) {
106         /* [NAPI_GEN]: 错误处理*/
107         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
108         return nullptr;
109     }
110     return cJSON_AddFalseToObjectOut;
111 }
112 
getAddfalsetoobjValuestringOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonObj)113 napi_value getAddfalsetoobjValuestringOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonObj)
114 {
115     napi_status status;
116     const napi_extended_error_info *extended_error_info;
117     const char *tag = "[KH545_cJSON_AddFalseToObject]";
118     napi_value valuestringOut;
119     /* [NAPI_GEN]:
120      * 返回值是字符串时,napi_create_string_utf8用于在原生代码中创建一个新的js字符串。这个函数会根据提供的UTF-8编码的字符串创建一个等价的js字符串
121      * env: 当前环境的句柄
122      * str: 指向以null结尾的UTF-8编码的C字符串的指针,这里以valuestring举例,用户可根据需求修改
123      * length:
124      * 字符串的长度,可以是具体的字节数,或者使用特殊的值NAPI_AUTO_LENGTH来让函数自己计算长度(假定字符串以null结尾)
125      * result: 指向napi_value的指针,函数执行成功后这个指针将指向新创建的js字符串
126      */
127     status = napi_create_string_utf8(env, jsonObj->valuestring == NULL ? "" : jsonObj->valuestring,
128         NAPI_AUTO_LENGTH, &valuestringOut);
129     if (status != napi_ok) {
130         /*错误处理*/
131         getErrMessage(status, env, extended_error_info, "napi_create_string_utf8", tag);
132         return nullptr;
133     }
134     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
135      * env: 当前环境的句柄
136      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
137      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
138      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
139      */
140     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "valuestring", valuestringOut);
141     if (status != napi_ok) {
142         /* [NAPI_GEN]: 错误处理*/
143         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
144         return nullptr;
145     }
146     return cJSON_AddFalseToObjectOut;
147 }
148 
getAddfalsetoobjStringOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonOut)149 napi_value getAddfalsetoobjStringOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonOut)
150 {
151     napi_status status;
152     const napi_extended_error_info *extended_error_info;
153     const char *tag = "[KH545_cJSON_AddFalseToObject]";
154     napi_value stringOut;
155     /* [NAPI_GEN]:
156      * 返回值是字符串时,napi_create_string_utf8用于在原生代码中创建一个新的js字符串。这个函数会根据提供的UTF-8编码的字符串创建一个等价的js字符串
157      * env: 当前环境的句柄
158      * str: 指向以null结尾的UTF-8编码的C字符串的指针,这里以string举例,用户可根据需求修改
159      * length:
160      * 字符串的长度,可以是具体的字节数,或者使用特殊的值NAPI_AUTO_LENGTH来让函数自己计算长度(假定字符串以null结尾)
161      * result: 指向napi_value的指针,函数执行成功后这个指针将指向新创建的js字符串
162      */
163     status = napi_create_string_utf8(env, jsonOut->string == NULL ? "" : jsonOut->string, NAPI_AUTO_LENGTH, &stringOut);
164     if (status != napi_ok) {
165         /*错误处理*/
166         getErrMessage(status, env, extended_error_info, "napi_create_string_utf8", tag);
167         return nullptr;
168     }
169     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
170      * env: 当前环境的句柄
171      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
172      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
173      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
174      */
175     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "string", stringOut);
176     if (status != napi_ok) {
177         /* [NAPI_GEN]: 错误处理*/
178         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
179         return nullptr;
180     }
181     return cJSON_AddFalseToObjectOut;
182 }
183 
getAddfalsetoobjNextOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonObj)184 napi_value getAddfalsetoobjNextOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonObj)
185 {
186     napi_status status;
187     const napi_extended_error_info *extended_error_info;
188     const char *tag = "[KH545_cJSON_AddFalseToObject]";
189     napi_value nextOut;
190     /* [NAPI_GEN]: 返回值是对象时,需要使用napi_create_object创建一个js的对象与js代码交互
191      * env: 当前环境的句柄
192      * result: 一个napi_value的指针,该指针将被设置为新创建的js对象
193      */
194     status = napi_create_object(env, &nextOut);
195     if (status != napi_ok) {
196         getErrMessage(status, env, extended_error_info, "napi_create_object", tag);
197         return nullptr;
198     }
199 
200     // 给jsonObj->next赋值
201     if (jsonObj == NULL) {
202         return NULL;
203     }
204     if (jsonObj->next != NULL) {
205         nextOut = getAddfalsetoobjTypeOut(env, nextOut, jsonObj->next);
206         nextOut = getAddfalsetoobjValuesdoubleOut(env, nextOut, jsonObj->next);
207         nextOut = getAddfalsetoobjValuesintOut(env, nextOut, jsonObj->next);
208         nextOut = getAddfalsetoobjValuestringOut(env, nextOut, jsonObj->next);
209         nextOut = getAddfalsetoobjStringOut(env, nextOut, jsonObj->next);
210         if (jsonObj->next->next != NULL) {
211             cJSON *nextNext = jsonObj->next->next;
212             if (nextNext != NULL) {
213                 nextOut = getAddfalsetoobjNextOut(env, nextOut, jsonObj->next);
214             }
215         }
216     }
217 
218     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
219      * env: 当前环境的句柄
220      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
221      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
222      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
223      */
224     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "next", nextOut);
225     if (status != napi_ok) {
226         /* [NAPI_GEN]: 错误处理*/
227         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
228         return nullptr;
229     }
230     return cJSON_AddFalseToObjectOut;
231 }
232 
getJsonobjfalseChildOut(napi_env env,napi_value childOut,cJSON * jsonObj)233 napi_value getJsonobjfalseChildOut(napi_env env, napi_value childOut, cJSON *jsonObj)
234 {
235     if (jsonObj->child != NULL) {
236         childOut = getAddfalsetoobjTypeOut(env, childOut, jsonObj->child);
237         childOut = getAddfalsetoobjValuesdoubleOut(env, childOut, jsonObj->child);
238         childOut = getAddfalsetoobjValuesintOut(env, childOut, jsonObj->child);
239         childOut = getAddfalsetoobjValuestringOut(env, childOut, jsonObj->child);
240         childOut = getAddfalsetoobjStringOut(env, childOut, jsonObj->child);
241         if (jsonObj->child->next != NULL) {
242             cJSON *childNext = jsonObj->child->next;
243             if (childNext != NULL) {
244                 childOut = getAddfalsetoobjNextOut(env, childOut, jsonObj->child);
245             }
246         }
247     }
248     return childOut;
249 }
250 
getAddfalsetoobjChildOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonObj)251 napi_value getAddfalsetoobjChildOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonObj)
252 {
253     napi_status status;
254     const napi_extended_error_info *extended_error_info;
255     const char *tag = "[KH545_cJSON_AddFalseToObject]";
256     napi_value childOut;
257     /* [NAPI_GEN]: 返回值是对象时,需要使用napi_create_object创建一个js的对象与js代码交互
258      * env: 当前环境的句柄
259      * result: 一个napi_value的指针,该指针将被设置为新创建的js对象
260      */
261     status = napi_create_object(env, &childOut);
262     if (status != napi_ok) {
263         getErrMessage(status, env, extended_error_info, "napi_create_object", tag);
264         return nullptr;
265     }
266     // 给jsonObj->child赋值
267     if (jsonObj != NULL) {
268         childOut = getJsonobjfalseChildOut(env, childOut, jsonObj);
269     }
270     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
271      * env: 当前环境的句柄
272      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
273      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
274      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
275      */
276     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "child", childOut);
277     if (status != napi_ok) {
278         /* [NAPI_GEN]: 错误处理*/
279         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
280         return nullptr;
281     }
282     return cJSON_AddFalseToObjectOut;
283 }
284 
getAddfalsetoobjPrevOut(napi_env env,napi_value cJSON_AddFalseToObjectOut,cJSON * jsonObj)285 napi_value getAddfalsetoobjPrevOut(napi_env env, napi_value cJSON_AddFalseToObjectOut, cJSON *jsonObj)
286 {
287     napi_status status;
288     const napi_extended_error_info *extended_error_info;
289     const char *tag = "[KH545_cJSON_AddFalseToObject]";
290     napi_value prevOut;
291     /* [NAPI_GEN]: 返回值是对象时,需要使用napi_create_object创建一个js的对象与js代码交互
292      * env: 当前环境的句柄
293      * result: 一个napi_value的指针,该指针将被设置为新创建的js对象
294      */
295     status = napi_create_object(env, &prevOut);
296     if (status != napi_ok) {
297         getErrMessage(status, env, extended_error_info, "napi_create_object", tag);
298         return nullptr;
299     }
300     /* [NAPI_GEN]: 返回值是对象时,将native侧的对象的属性和值依次塞入napi_create_object创建出的对象,最终将该对象返回js
301      * env: 当前环境的句柄
302      * object: 要设置属性的js对象,该对象是由上文napi_create_object创建的
303      * utf8name: 属性的名称,是一个以UTF-8编码的字符串
304      * value: 与属性名称关联的值,这个值可以是任何js类型(如一个数值、字符串、另一个对象等)
305      */
306     status = napi_set_named_property(env, cJSON_AddFalseToObjectOut, "prev", prevOut);
307     if (status != napi_ok) {
308         /* [NAPI_GEN]: 错误处理*/
309         getErrMessage(status, env, extended_error_info, "napi_set_named_property", tag);
310         return nullptr;
311     }
312     return cJSON_AddFalseToObjectOut;
313 }
314 
getAddfalsetoobjInfo(napi_env env,napi_value paramIn)315 char *getAddfalsetoobjInfo(napi_env env, napi_value paramIn)
316 {
317     napi_status status;
318     const napi_extended_error_info *extended_error_info;
319     const char *tag = "[KH545_cJSON_AddFalseToObject]";
320     /* [NAPI_GEN]: 从args数组中获取入参 */
321     napi_valuetype valuetypename;
322     /* [NAPI_GEN]: 获取入参类型,第1个入参
323      * env: N-API环境的句柄,表示当前的上下文
324      * value: 要检查类型的js值
325      * result: 是一个指针,指向napi_valuetype枚举的值,函数会将结果存储在这里
326      */
327     status = napi_typeof(env, paramIn, &valuetypename);
328     if (status != napi_ok) {
329         getErrMessage(status, env, extended_error_info, "napi_typeof", tag);
330         return nullptr;
331     }
332     size_t strSize1 = 0;
333     /* [NAPI_GEN]: napi_get_value_string_utf8用于将Js字符串转换为UTF-8编码的C字符串
334      * env: N-API环境的句柄,表示当前的上下文
335      * value: 要转换的JavaScript字符串
336      * buf: 用于存储结果的字符数组的指针
337      * bufsize: 缓冲区大小,以字节为单位
338      * result: 转换后的字符串的字节长度(不包括空终止符)。若干buf是NULL,则返回所需的缓冲区大小(包括空终止符)
339      */
340     /* [NAPI_GEN]: buf参数是NULL时,用于获取所需缓冲区大小*/
341     status = napi_get_value_string_utf8(env, paramIn, NULL, 0, &strSize1);
342     if (status != napi_ok) {
343         getErrMessage(status, env, extended_error_info, "get value string", tag);
344         return nullptr;
345     }
346     char *nameIn = new char[strSize1 + 1];
347     /* [NAPI_GEN]: 用于获取字符串*/
348     status = napi_get_value_string_utf8(env, paramIn, nameIn, strSize1 + 1, &strSize1);
349     if (status != napi_ok) {
350         getErrMessage(status, env, extended_error_info, "get value string", tag);
351         delete[] nameIn;
352         return nullptr;
353     }
354 
355     return nameIn;
356 }
357 
358 /* [NAPI_GEN]:对应cJSON.h中: CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
359  * 的napi方法,
360  * 输入:一个cJSON对象,需要添加的item名字(字符串)
361  * 输出:添加item后的cJSON对象
362  */
KH545_cJSON_AddFalseToObject(napi_env env,napi_callback_info info)363 napi_value KH545_cJSON_AddFalseToObject(napi_env env, napi_callback_info info)
364 {
365     napi_status status;
366     /* [NAPI_GEN]: Node.js在其N-API中用来提供错误的扩展信息的结构体,结构体包含以下字段
367      * error_message: 一个指向错误详细字符串的指针,提供了关于错误的文本描述
368      * engin_reserved: 一个保留给Js引擎使用的指针
369      * error_code: 错误码,指示了错误的种类,比如napi_pending_exception表示有一个JavaScript异常未被清理。
370      * engine_error_code:一个引擎特定的错误码,为引擎实现保留,具体含义依赖于使用的JavaScript引擎。
371      * error_message_len:错误消息字符串的长度。
372      */
373     const napi_extended_error_info *extended_error_info;
374     /* [NAPI_GEN]: tag: 日志打印标签*/
375     const char *tag = "[KH545_cJSON_AddFalseToObject]";
376     /* [NAPI_GEN]: get function param in*/
377     /* [NAPI_GEN]: argc:js传入的参数个数 */
378     size_t argc = PARAMS2;
379     /* [NAPI_GEN]: args: 一个数组,保存js传入的参数 */
380     napi_value args[PARAMS2] = {nullptr};
381     /* [NAPI_GEN]: napi_get_cb_info用于获取JS调用该函数时所传递的参数、接收参数的个数以及'this'的值
382      * env: 当前环境的句柄,代表当前的Node.js环境
383      * info: 回调信息句柄,代表当前回调的上下文
384      * argc: 指向size_t的指针,最初应包含可接受的最大参数数量,函数返回时,它将包含实际传递的参数数量
385      * args: 一个足够大的数组,用于接收传递给回调函数的所有js参数。数组的大小应至少与argc传入的值一样大。
386      * this_arg: 如果不是NULL,则返回js回调中this的值
387      * data: 如果不是NULL,则返回与回调函数关联的任何可选数据。通常用于传递在创建函数时指定的静态数据
388      */
389     status = napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
390     if (status != napi_ok) {
391         /* [NAPI_GEN]: 错误处理*/
392         getErrMessage(status, env, extended_error_info, "napi_get_cb_info", tag);
393         return nullptr;
394     }
395     napi_value paramIn = args[PARAMS1];
396     char *nameIn = getAddfalsetoobjInfo(env, paramIn);
397 
398     // Todo: add business logic. 在这前后代码为框架所生成
399     cJSON *jsonOut = nullptr;
400     cJSON *jsonObj = cJSON_CreateObject();
401     // init 传入的obj 初始化
402     napi_value cjsonObj = args[PARAMS0];
403     jsonObj = initCJSON_Object(env, cjsonObj, jsonObj, tag);
404     // add false to jsonObj
405     jsonOut = cJSON_AddFalseToObject(jsonObj, nameIn);
406     // 打印 jsonObj 值
407     char *jsonResStr = cJSON_Print(jsonOut);
408     if (jsonResStr != NULL) {
409         OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "KH545_cJSON_AddFalseToObject", "jsonResStr: %s", jsonResStr);
410     }
411 
412     delete[] nameIn;
413     /* [NAPI_GEN]: function return value*/
414     napi_value cJSON_AddFalseToObjectOut;
415     /* [NAPI_GEN]: 返回值是对象时,需要使用napi_create_object创建一个js的对象与js代码交互
416      * env: 当前环境的句柄
417      * result: 一个napi_value的指针,该指针将被设置为新创建的js对象
418      */
419     status = napi_create_object(env, &cJSON_AddFalseToObjectOut);
420     if (status != napi_ok) {
421         getErrMessage(status, env, extended_error_info, "napi_create_object", tag);
422         return nullptr;
423     }
424 
425     cJSON_AddFalseToObjectOut = getAddfalsetoobjChildOut(env, cJSON_AddFalseToObjectOut, jsonObj);
426     cJSON_AddFalseToObjectOut = getAddfalsetoobjNextOut(env, cJSON_AddFalseToObjectOut, jsonObj);
427     cJSON_AddFalseToObjectOut = getAddfalsetoobjPrevOut(env, cJSON_AddFalseToObjectOut, jsonObj);
428     cJSON_AddFalseToObjectOut = getAddfalsetoobjTypeOut(env, cJSON_AddFalseToObjectOut, jsonObj);
429     cJSON_AddFalseToObjectOut = getAddfalsetoobjValuesdoubleOut(env, cJSON_AddFalseToObjectOut, jsonObj);
430     cJSON_AddFalseToObjectOut = getAddfalsetoobjValuesintOut(env, cJSON_AddFalseToObjectOut, jsonObj);
431     cJSON_AddFalseToObjectOut = getAddfalsetoobjValuestringOut(env, cJSON_AddFalseToObjectOut, jsonObj);
432     cJSON_AddFalseToObjectOut = getAddfalsetoobjStringOut(env, cJSON_AddFalseToObjectOut, jsonObj);
433 
434     cJSON_Delete(jsonObj);
435     return cJSON_AddFalseToObjectOut;
436 }
437