Skip to content

Commit ece6cbd

Browse files
committed
update resolveValue, add get method.
1 parent bd7e050 commit ece6cbd

File tree

4 files changed

+58
-8
lines changed

4 files changed

+58
-8
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ To install the library add:
1515
maven { url "https://jitpack.io" }
1616
}
1717
dependencies {
18-
compile 'com.github.webee:java-json-api:v1.2.0'
18+
compile 'com.github.webee:java-json-api:v1.3.0'
1919
}
2020
```

src/main/java/com/github/webee/json/JSONArray.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public interface JSONArray {
99

1010
boolean isNull(int index);
1111
// get the pure java object that correspond to it's type.
12+
Object[] get();
1213
Object get(int index);
1314
Boolean getBoolean(int index);
1415
Integer getInteger(int index);

src/main/java/com/github/webee/json/JSONObject.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.webee.json;
22

3+
import java.util.Map;
34
import java.util.Set;
45

56
/**
@@ -12,6 +13,7 @@ public interface JSONObject {
1213

1314
boolean isNull(String key);
1415
// get the pure java object that correspond to it's type.
16+
Map<String, Object> get();
1517
Object get(String key);
1618
Boolean getBoolean(String key);
1719
Integer getInteger(String key);

src/main/java/com/github/webee/json/Utils.java

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,19 @@ public static Object[] arrayToObjects(JSONArray array) {
4646
}
4747
Object[] res = new Object[array.size()];
4848
for (int i=0; i < array.size(); i++) {
49-
res[i] = array.get(i);
49+
res[i] = resolveValue(array.get(i));
50+
}
51+
52+
return res;
53+
}
54+
55+
public static Object[] arrayToObjects(Object[] array) {
56+
if (array == null) {
57+
return null;
58+
}
59+
Object[] res = new Object[array.length];
60+
for (int i=0; i < array.length; i++) {
61+
res[i] = resolveValue(array[i]);
5062
}
5163

5264
return res;
@@ -63,7 +75,19 @@ public static Map<String, Object> objectToMap(JSONObject object) {
6375
}
6476
Map<String, Object> res = new HashMap<>();
6577
for (String key : object.keySet()) {
66-
res.put(key, object.get(key));
78+
res.put(key, resolveValue(object.get(key)));
79+
}
80+
81+
return res;
82+
}
83+
84+
public static Map<String, Object> objectToMap(Map<String, Object> object) {
85+
if (object == null) {
86+
return null;
87+
}
88+
Map<String, Object> res = new HashMap<>();
89+
for (String key : object.keySet()) {
90+
res.put(key, resolveValue(object.get(key)));
6791
}
6892

6993
return res;
@@ -75,11 +99,34 @@ public static Map<String, Object> objectToMap(JSONObject object) {
7599
* @return pure java object.
76100
*/
77101
public static Object resolveValue(Object value) {
78-
if (value instanceof JSONArray) {
79-
return Utils.arrayToObjects((JSONArray) value);
80-
} else if (value instanceof JSONObject) {
81-
return Utils.objectToMap((JSONObject) value);
102+
return resolveValue(value, getType(value));
103+
}
104+
105+
public static Object resolveValue(Object value, JSONType t) {
106+
if (t == null) {
107+
return null;
82108
}
83-
return value;
109+
110+
switch (t) {
111+
case Object:
112+
if (value instanceof JSONObject) {
113+
return Utils.objectToMap((JSONObject) value);
114+
} else if (value instanceof Map) {
115+
return Utils.objectToMap((Map<String, Object>) value);
116+
}
117+
break;
118+
case Array:
119+
if (value instanceof JSONArray) {
120+
return Utils.arrayToObjects((JSONArray) value);
121+
} else if (value instanceof Object[]) {
122+
return Utils.arrayToObjects((Object[]) value);
123+
}
124+
break;
125+
case Null:
126+
return null;
127+
default:
128+
return value;
129+
}
130+
return null;
84131
}
85132
}

0 commit comments

Comments
 (0)