Created
February 24, 2016 03:02
-
-
Save viperwarp/2beb6bbefcc268dee7ad to your computer and use it in GitHub Desktop.
React-Native Module, ReadableMap/Array to Java JSON objects
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private static WritableMap convertJsonToMap(JSONObject jsonObject) throws JSONException { | |
WritableMap map = new WritableNativeMap(); | |
Iterator<String> iterator = jsonObject.keys(); | |
while (iterator.hasNext()) { | |
String key = iterator.next(); | |
Object value = jsonObject.get(key); | |
if (value instanceof JSONObject) { | |
map.putMap(key, convertJsonToMap((JSONObject) value)); | |
} else if (value instanceof JSONArray) { | |
map.putArray(key, convertJsonToArray((JSONArray) value)); | |
} else if (value instanceof Boolean) { | |
map.putBoolean(key, (Boolean) value); | |
} else if (value instanceof Integer) { | |
map.putInt(key, (Integer) value); | |
} else if (value instanceof Double) { | |
map.putDouble(key, (Double) value); | |
} else if (value instanceof String) { | |
map.putString(key, (String) value); | |
} else { | |
map.putString(key, value.toString()); | |
} | |
} | |
return map; | |
} | |
private static WritableArray convertJsonToArray(JSONArray jsonArray) throws JSONException { | |
WritableArray array = new WritableNativeArray(); | |
for (int i = 0; i < jsonArray.length(); i++) { | |
Object value = jsonArray.get(i); | |
if (value instanceof JSONObject) { | |
array.pushMap(convertJsonToMap((JSONObject) value)); | |
} else if (value instanceof JSONArray) { | |
array.pushArray(convertJsonToArray((JSONArray) value)); | |
} else if (value instanceof Boolean) { | |
array.pushBoolean((Boolean) value); | |
} else if (value instanceof Integer) { | |
array.pushInt((Integer) value); | |
} else if (value instanceof Double) { | |
array.pushDouble((Double) value); | |
} else if (value instanceof String) { | |
array.pushString((String) value); | |
} else { | |
array.pushString(value.toString()); | |
} | |
} | |
return array; | |
} | |
private static JSONObject convertMapToJson(ReadableMap readableMap) throws JSONException { | |
JSONObject object = new JSONObject(); | |
ReadableMapKeySetIterator iterator = readableMap.keySetIterator(); | |
while (iterator.hasNextKey()) { | |
String key = iterator.nextKey(); | |
switch (readableMap.getType(key)) { | |
case Null: | |
object.put(key, JSONObject.NULL); | |
break; | |
case Boolean: | |
object.put(key, readableMap.getBoolean(key)); | |
break; | |
case Number: | |
object.put(key, readableMap.getDouble(key)); | |
break; | |
case String: | |
object.put(key, readableMap.getString(key)); | |
break; | |
case Map: | |
object.put(key, convertMapToJson(readableMap.getMap(key))); | |
break; | |
case Array: | |
object.put(key, convertArrayToJson(readableMap.getArray(key))); | |
break; | |
} | |
} | |
return object; | |
} | |
private static JSONArray convertArrayToJson(ReadableArray readableArray) throws JSONException { | |
JSONArray array = new JSONArray(); | |
for (int i = 0; i < readableArray.size(); i++) { | |
switch (readableArray.getType(i)) { | |
case Null: | |
break; | |
case Boolean: | |
array.put(readableArray.getBoolean(i)); | |
break; | |
case Number: | |
array.put(readableArray.getDouble(i)); | |
break; | |
case String: | |
array.put(readableArray.getString(i)); | |
break; | |
case Map: | |
array.put(convertMapToJson(readableArray.getMap(i))); | |
break; | |
case Array: | |
array.put(convertArrayToJson(readableArray.getArray(i))); | |
break; | |
} | |
} | |
return array; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Why do you ignore values with type
Null
in convertArrayToJson() method?null
is correct JSON value and can be stored inJSONArray
viaJSONObject.NULL
.