我有一个像这样与 Android 通信的 React Native 组件 -
我的 React Native 代码-
const myModule = NativeModules.MyProcessor;
myModule.processData(obj1, obj2);
我在 MyProcessor.java
中的 Android 代码是 -
@ReactMethod
public void processData(final Object1 obj1, final Objet2 obj2) {
//Do something here
}
我的对象数据看起来像 -
"data1": {
"id": "1",
"name": "john",
"key": "xxxxxxxx"
},
"details": {
"detailId": "2",
"detailName": "peter",
"counter": 1
}
我得到了 2 个对象 data1 和 details,我需要这两个对象以及 detailId。
我的问题是如何在我的 java 中使用这两个对象?
最佳答案
问题:
How do I use these 2 objects Object1 and Object2 in my java?
答案: 引自 here :
"The following argument types are supported for methods annotated with @ReactMethod and they directly map to their JavaScript equivalents"
Boolean -> Bool
Integer -> Number
Double -> Number
Float -> Number
String -> String
Callback -> function
ReadableMap -> Object
ReadableArray -> Array
React Native 正在将 javascript 对象转换为 ReadableMap
。
因此,与其期待原生模块中的 Object
,不如像这样实现方法:
@ReactMethod
public void processData(final ReadableMap obj1, final ReadableMap obj2) {
// Parse the ReadableMap using the available interface methods
}
这些是 ReadableMap
接口(interface)中可用的方法:Source
public interface ReadableMap {
boolean hasKey(String name);
boolean isNull(String name);
boolean getBoolean(String name);
double getDouble(String name);
int getInt(String name);
String getString(String name);
ReadableArray getArray(String name);
ReadableMap getMap(String name);
Dynamic getDynamic(String name);
ReadableType getType(String name);
ReadableMapKeySetIterator keySetIterator();
HashMap<String, Object> toHashMap();
}
更新
按照您发布的示例对象,您可以像这样解析您的数据:
ReadableMap data1 = obj1.getMap("data1");
String id = data1.getString("id");
String name = data1.getString("name");
// And so on...
ReadableMap details = obj1.getMap("details");
String detailId = details.getString("detailId");
int counter = details.getInt("counter");
// And so on...
关于android - 使用自定义对象在 React native 和 android 之间进行 React native 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51842209/