11/**
2- * Java JSON parser/generator, MIT (c) 2020-2021 miktim@mail.ru
2+ * Java JSON parser/generator, MIT (c) 2020-2022 miktim@mail.ru
33 *
44 * Release notes:
55 * - Java 7+, Android compatible;
@@ -47,12 +47,14 @@ public static String stringify(Object object) throws IllegalArgumentException {
4747 return stringifyObject (object );
4848 }
4949
50- // private LinkedHashMap<String, Object> members = new LinkedHashMap<>();
51-
52- public JSON () {
53-
50+ // Memebers: name,value pairs
51+ public JSON (Object ... members ) throws IndexOutOfBoundsException {
52+ super ();
53+ for (int i = 0 ; i < members .length ;) {
54+ this .put (String .valueOf (members [i ++]), members [i ++]);
55+ }
5456 }
55-
57+
5658 public String stringify () {
5759 return stringify (this );
5860 }
@@ -61,40 +63,17 @@ public String stringify() {
6163 public String toString () {
6264 return stringify ();
6365 }
64- /*
65- @SuppressWarnings("unchecked")
66- @Override
67- public JSON clone() {//throws CloneNotSupportedException {
68- // JSON clone = (JSON) super.clone();
69- JSON clone = new JSON();
70- clone.members = (LinkedHashMap<String, Object>) this.members.clone();
71- return clone;
72- }
73- */
66+
7467 public List <String > list () {
7568 return new ArrayList <>(this .keySet ());
7669 }
7770
7871 public boolean exists (String memberName ) {
79- return getMembers ().containsKey (memberName );
80- }
81-
82- public Object get (String memberName ) {
83- return getMembers ().get (memberName );
72+ return this .containsKey (memberName );
8473 }
8574
8675 public JSON set (String memberName , Object value ) {
87- // throws NullPointerException, IllegalArgumentException {
88- // getMembers().put(checkPropName(memberName), checkObjectType(value));
89- getMembers ().put (memberName , value );
90- return this ;
91- }
92-
93- public Object remove (String memberName ) {
94- return this .getMembers ().remove (memberName );
95- }
96-
97- private LinkedHashMap <String , Object > getMembers () {
76+ this .put (memberName , value );
9877 return this ;
9978 }
10079
@@ -250,7 +229,7 @@ Object parse(Reader reader) throws IOException, ParseException {
250229 }
251230 }
252231
253- // Java Lists converts to JSON arrays [V[0],...,V[n]], Maps - to object {"K":V,...}
232+ // Java Lists, Sets converts to JSON arrays [V[0],...,V[n]], Maps - to object {"K":V,...}
254233 @ SuppressWarnings ("unchecked" )
255234 static String stringifyObject (Object value ) {
256235 if (value == null ) {
@@ -259,10 +238,6 @@ static String stringifyObject(Object value) {
259238 return "\" " + escapeString ((String ) value ) + "\" " ;
260239 } else if (value instanceof Number || value instanceof Boolean ) {
261240 return value .toString (); // Number, Boolean
262- // } else if (value instanceof Character) {
263- // return stringifyObject(value.toString());
264- // } else if (value instanceof JSON) {
265- // return stringifyObject((JSON) value);
266241 } else if (value .getClass ().isArray ()) {
267242 StringBuilder sb = new StringBuilder ("[" );
268243 String separator = "" ;
@@ -289,8 +264,6 @@ static String stringifyObject(Object value) {
289264 return stringifyObject (((Set ) value ).toArray ());
290265 }
291266 return stringifyObject (String .valueOf (value ));
292- // throw new IllegalArgumentException("Unsupported object: "
293- // + value.getClass().getSimpleName());
294267 }
295268
296269 private static final char [] ESCAPED_CHARS = {'"' , '/' , '\\' , 'b' , 'f' , 'n' , 'r' , 't' };
0 commit comments