Unity JNI,获取ArrayList>从Android Nat

本文关键字:String Android Nat JNI 获取 Unity Hashtable ArrayList | 更新日期: 2023-09-27 18:16:27

谁能帮助我在Unity c#中使用ArrayList<Hashtable<String, String>> ?

我可以从android原生库中获得bool和字符串,没有问题,但这个让我很困惑,

public ArrayList<Hashtable<String, String>> getProducts()
{
  return pluginClass.CallStatic<ArrayList<Hashtable<String, String>>>("getProductList");
}
许多谢谢。

Unity JNI,获取ArrayList<Hashtable<String, String>>从Android Nat

using System.Collections.Generic;
public AndroidJavaOject getProducts()
{
   return pluginClass.CallStatic<AndroidJavaOject>("getProductList");
}

现在,当您在c#中调用getProducts()时,您将获得产品列表,这是产品的java表示形式。下一步是如何将其解析为POCO,这显然是另一个问题。

通常不建议将返回的对象解析为POCO,因为很难在没有错误或异常的情况下将所有数据从Java编组到c#。一个简单的方法是使用Json: 这样的介质。Java:

public String getProducts(){
    ObjectWriter ow = new  ObjectMapper().writer().withDefaultPrettyPrinter();
    String json = ow.writeValueAsString(productListObject); 
    return json;
}
c#中的

public void getProducts()
{
   string json = (string) pluginClass.CallStatic<AndroidJavaOject>("getProductList"); //or
   //string json = pluginClass.CallStatic<AndroidJavaOject>("getProductList").ToString(); 
   //You can use any json library to deserialize the json then
   Debug.Log(json); // Make sure this is correct string you wish to get
}

给定json字符串,从其中反序列化产品列表要方便得多。