Commit Graph

65 Commits

Author SHA1 Message Date
Dave Gamble 3c6b3cc617 start of JSON Patch implementation. cJSON gained a cJSON_InsertItemToArray which pushes elements up by one.
This is needed for JSON Patch. Everything but Test is implemented for ApplyPatches.


git-svn-id: svn://svn.code.sf.net/p/cjson/code@65 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-10 14:17:59 +00:00
Dave Gamble 858671cc7f rework cJSONUtils_GetPointer to avoid malloc/free by using strcmp with pointer-encoding awareness.
git-svn-id: svn://svn.code.sf.net/p/cjson/code@64 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-10 12:14:59 +00:00
Dave Gamble c0f5e2056b add cJSON_Utils which includes JSON Pointer implementation
git-svn-id: svn://svn.code.sf.net/p/cjson/code@63 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 18:29:05 +00:00
Dave Gamble 2abfb716d1 fix formatting.
git-svn-id: svn://svn.code.sf.net/p/cjson/code@62 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:38:18 +00:00
Dave Gamble d9fc81e6c8 Added buffered printing methods for faster printing.
git-svn-id: svn://svn.code.sf.net/p/cjson/code@61 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:34:35 +00:00
Dave Gamble 70984d47e9 patch to optimise array/object printing.
git-svn-id: svn://svn.code.sf.net/p/cjson/code@60 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:28:26 +00:00
Dave Gamble 575724a15f optimises for number/string print
git-svn-id: svn://svn.code.sf.net/p/cjson/code@59 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:25:55 +00:00
Dave Gamble 28691956a6 fix \u parser
git-svn-id: http://svn.code.sf.net/p/cjson/code@58 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-19 14:49:06 +00:00
Dave Gamble c537515c17 inbuilt hex parser for unicode, which ought to be a lot faster.
git-svn-id: http://svn.code.sf.net/p/cjson/code@57 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-14 13:20:42 +00:00
Dave Gamble 22e51c92f0 license file separated out :)
git-svn-id: http://svn.code.sf.net/p/cjson/code@56 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-14 13:16:18 +00:00
Dave Gamble 73cc8dd1c4 cJSON_Minify (which strips comments),
fixed buffer overflow
const * for array creates


git-svn-id: http://svn.code.sf.net/p/cjson/code@55 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-14 12:58:13 +00:00
Dave Gamble 46e3724aa8 clean up test.c
git-svn-id: http://svn.code.sf.net/p/cjson/code@54 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-09 12:57:04 +00:00
Dave Gamble 15adf71272 Tidy comments. Add cJSON_SetIntValue.
git-svn-id: http://svn.code.sf.net/p/cjson/code@53 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-09 12:56:01 +00:00
Dave Gamble 2c9474e9e3 fix non-explicit cast
git-svn-id: http://svn.code.sf.net/p/cjson/code@52 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-09 12:55:11 +00:00
Dave Gamble 02a1e544f7 add cJSON_AddBoolToObject().
git-svn-id: http://svn.code.sf.net/p/cjson/code@51 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-06 12:59:21 +00:00
Dave Gamble 96c59f3e49 Wire in ParseWithOpts to allow detection of JSON with following garbage.
git-svn-id: http://svn.code.sf.net/p/cjson/code@50 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-06 12:44:17 +00:00
Dave Gamble d755436ba7 tests for cJSON_Duplicate, so it will fail by returning 0 if anything fails to allocate
git-svn-id: http://svn.code.sf.net/p/cjson/code@49 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 18:26:51 +00:00
Dave Gamble 927aa631b8 Added cJSON_Duplicate. With commentary
git-svn-id: http://svn.code.sf.net/p/cjson/code@48 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 18:23:22 +00:00
Dave Gamble a7fe08778f bracket logic (to quiet a warning).
Fix for potential buffer overflow printing extremely large integers.


git-svn-id: http://svn.code.sf.net/p/cjson/code@47 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:42:42 +00:00
Dave Gamble 8c60f99c72 fix handling of utf16 surrogate pairs!
git-svn-id: http://svn.code.sf.net/p/cjson/code@46 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:38:48 +00:00
Dave Gamble 8aa084918f Revert last patch. Simpler fix for empty arrays/objects is to handle them explicitly and then bail.
Saves plenty of unnecessary state-tracking.


git-svn-id: http://svn.code.sf.net/p/cjson/code@45 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:27:59 +00:00
Dave Gamble 3ddf3a5911 stable solution for printing arrays - based on patch donated by Jerome Lang.
Resolves issue in case malloc(0)!=0.



git-svn-id: http://svn.code.sf.net/p/cjson/code@44 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:14:12 +00:00
Dave Gamble 4678f33b5c Fix up ANSI issues.
git-svn-id: http://svn.code.sf.net/p/cjson/code@43 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:00:31 +00:00
Dave Gamble fd1ac4f179 make parse_number more robust!
git-svn-id: http://svn.code.sf.net/p/cjson/code@42 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-10-10 15:33:19 +00:00
Dave Gamble 0d268cfef7 Update to cJSON! We now support UTF-16 surrogate pairs :)
git-svn-id: http://svn.code.sf.net/p/cjson/code@41 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-10-10 15:22:34 +00:00
Dave Gamble 9061b7a7e7 Fix c99 violation!
git-svn-id: http://svn.code.sf.net/p/cjson/code@40 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-14 21:34:03 +00:00
Dave Gamble 15dada46b5 Fix missing cast for compilation as c++!!
git-svn-id: http://svn.code.sf.net/p/cjson/code@39 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-07 16:35:13 +00:00
Dave Gamble 6a58ba5285 Include some analysis so that you can debug a failed parse.
You really oughtn't go too far with this, because it's only loose information; as I've said before, cJSON +isn't+ a validating parser. But this might give you enough info to save yourself on some rare occasion ;)



git-svn-id: http://svn.code.sf.net/p/cjson/code@38 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 21:22:57 +00:00
Dave Gamble b5d57642c2 Handle control-chars.
In a certain sense, we shouldn't be seeing them, but this way we at least handle them well.


git-svn-id: http://svn.code.sf.net/p/cjson/code@37 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 21:04:46 +00:00
Dave Gamble b5d2db4d9a print_object was calling free() rather than cJSON_free() under failure conditions!
git-svn-id: http://svn.code.sf.net/p/cjson/code@36 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 19:15:06 +00:00
Dave Gamble 6f51f007a9 cJSON_Parse("") should return 0.
git-svn-id: http://svn.code.sf.net/p/cjson/code@35 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 19:12:29 +00:00
Dave Gamble 02d86ef778 Update to permit compilation with gcc -ansi flag
(changed all C++ // comments to C /* */ comments).



git-svn-id: http://svn.code.sf.net/p/cjson/code@34 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 19:09:43 +00:00
Dave Gamble de7afcc458 change firstByteMark to unsigned to prevent constant overflow warning
git-svn-id: http://svn.code.sf.net/p/cjson/code@33 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-02-18 10:40:37 +00:00
Dave Gamble 149d013543 Wrong order for variable declaration.
git-svn-id: http://svn.code.sf.net/p/cjson/code@32 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-02-13 22:32:15 +00:00
Dave Gamble 6711153d41 CreateBool, because it's useful ;)
git-svn-id: http://svn.code.sf.net/p/cjson/code@31 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-02-12 16:24:54 +00:00
Dave Gamble 3fb3989bb1 All memory allocations are now checked, and should fail gracefully in a low memory environment.
git-svn-id: http://svn.code.sf.net/p/cjson/code@30 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-27 13:01:15 +00:00
Dave Gamble 7dd9280267 Fix handling of non-ascii characters!
Many thanks to an anonymous submitter for this fix!!



git-svn-id: http://svn.code.sf.net/p/cjson/code@29 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-23 12:44:58 +00:00
Dave Gamble d9840479f5 Include ctype.h for tolower()
git-svn-id: http://svn.code.sf.net/p/cjson/code@28 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-07 23:07:58 +00:00
Dave Gamble ee4ce32ea8 make strcasecmp STABLE if passed a null string
git-svn-id: http://svn.code.sf.net/p/cjson/code@27 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-01 23:13:31 +00:00
Dave Gamble 6420cfe7c4 solve the stricmp/strcasecmp in a dumb way for good.
I might make cJSON_strcasecmp hookable, depending on what feedback i get.
There are now +NO+ #ifdef/#endif WINDOWS clauses, just neat ANSI C.
Also, this DOES NOT represent an efficiency hit for parsing, since the casecmp code is ONLY used for retrieval of object values, which would be after the parse stage. 


git-svn-id: http://svn.code.sf.net/p/cjson/code@26 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-12-09 15:43:38 +00:00
Dave Gamble efe33fabbb ID: 2907153
declare variable first, so we're proper c ;)


git-svn-id: http://svn.code.sf.net/p/cjson/code@25 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-12-09 12:31:32 +00:00
Dave Gamble 37963a72b9 Don't crash if someone calls cJSON_Print(0);
git-svn-id: http://svn.code.sf.net/p/cjson/code@24 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-26 20:17:25 +00:00
Dave Gamble 091c0676c1 return 0!
git-svn-id: http://svn.code.sf.net/p/cjson/code@23 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 19:33:40 +00:00
Dave Gamble 341bb3c640 oops! remember to kill dead pointers on Detach!!
git-svn-id: http://svn.code.sf.net/p/cjson/code@22 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 17:06:26 +00:00
Dave Gamble 79a796aed2 Detatch and Remove objects from Arrays/Objects.
git-svn-id: http://svn.code.sf.net/p/cjson/code@21 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 17:04:05 +00:00
Dave Gamble 29b085bc5d Feature Request: 2903802.
If you need to add an existing cJSON to a new object, but the existing object
must not be affected by this, use cJSON_AddItemReferenceTo<Array|Object>.

This will make a "reference" to the existing object (which is what you really mean to do),
and allow you to use it with a new object without fear of names being corrupted or things
being deleted.

Think of it like a reference, since that's pretty much what it is.
If you modify the resulting object (i.e. you AddItemReference, then retrieve with GetObjectItem,
and then start adding/replacing) you'll modify the object you pass in (in other words, this
doesn't clone everything, since that would probably end up being wasteful of space), however,
if you add it, and treat it as if it were const, everything will be fine!
 


git-svn-id: http://svn.code.sf.net/p/cjson/code@20 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 16:52:07 +00:00
Dave Gamble c4e8954eb2 Feature request: 2903779.
Unformatted output. :)



git-svn-id: http://svn.code.sf.net/p/cjson/code@19 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 15:27:39 +00:00
Dave Gamble 501ff3b3d0 if it's a big number, but still an integer, print it exactly!
git-svn-id: http://svn.code.sf.net/p/cjson/code@18 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 15:18:19 +00:00
Dave Gamble 0dbe29ffe8 fix bug 2895595 from jshvrsn whereby values outside of INT_MIN/INT_MAX range are printed incorrectly as ints.
git-svn-id: http://svn.code.sf.net/p/cjson/code@17 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-11 00:15:53 +00:00
Dave Gamble 69dca155a9 comment these out for clarity...
git-svn-id: http://svn.code.sf.net/p/cjson/code@16 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-11 00:14:51 +00:00