// ------------------------------------------------------------------------------------------- // Copyright (C) 2016 Sony Interactive Entertainment Inc. // Licensed under the MIT License. See the LICENSE file in the project root for license information. // -------------------------------------------------------------------------------------------- package com.tkporter.fabrictwitterkit; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.Iterator; public class FabricTwitterKitUtils { public static WritableMap jsonToWritableMap(String json) throws JSONException { return jsonToWritableMap(new JSONObject(json)); } private static WritableMap jsonToWritableMap(final JSONObject jsonObject) throws JSONException { final WritableMap writableMap = Arguments.createMap(); final Iterator iterator = jsonObject.keys(); while (iterator.hasNext()) { final String key = (String) iterator.next(); final Object value = jsonObject.get(key); if (value instanceof Float || value instanceof Double) { writableMap.putDouble(key, jsonObject.getDouble(key)); } else if (value instanceof Number) { writableMap.putInt(key, jsonObject.getInt(key)); } else if (value instanceof String) { writableMap.putString(key, jsonObject.getString(key)); } else if (value instanceof JSONObject) { writableMap.putMap(key, jsonToWritableMap(jsonObject.getJSONObject(key))); } else if (value instanceof JSONArray) { writableMap.putArray(key, jsonToWritableArray(jsonObject.getJSONArray(key))); } else if (value instanceof Boolean) { writableMap.putBoolean(key, jsonObject.getBoolean(key)); } else if (value == JSONObject.NULL) { writableMap.putNull(key); } } return writableMap; } private static WritableArray jsonToWritableArray(final JSONArray jsonArray) throws JSONException { final WritableArray writableArray = Arguments.createArray(); for (int i = 0; i < jsonArray.length(); i++) { final Object value = jsonArray.get(i); if (value instanceof Float || value instanceof Double) { writableArray.pushDouble(jsonArray.getDouble(i)); } else if (value instanceof Number) { writableArray.pushInt(jsonArray.getInt(i)); } else if (value instanceof String) { writableArray.pushString(jsonArray.getString(i)); } else if (value instanceof Boolean) { writableArray.pushBoolean(jsonArray.getBoolean(i)); } else if (value instanceof JSONObject) { writableArray.pushMap(jsonToWritableMap(jsonArray.getJSONObject(i))); } else if (value instanceof JSONArray) { writableArray.pushArray(jsonToWritableArray(jsonArray.getJSONArray(i))); } else if (value == JSONObject.NULL) { writableArray.pushNull(); } } return writableArray; } }