将Java List转换为Javascript数组

Pra*_*bhu 6 javascript java arrays android list

我的Android应用程序中有以下java代码,想要一种将Java列表转换为可在javascript中使用的数组的方法:

Java的:

public void onCompleted(List<GraphUser> users, Response response) {
    for(int i = 0; i < users.size(); i++)
    {
             //add to an array object that can be used in Javascript
             webView.loadUrl("javascript:fetchFriends(arrObj)");        
    }               
 }
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

  //this is how I want to be able to use the object in Javascript
    function parseFriends(usersObjectFromJava){
       var users = [];
        for (var i = 0; i < usersObjectFromJava.length; i++) {
            var u = {
                Id: usersObjectFromJava[i].id + "",
                UserName: usersObjectFromJava[i].username,
                FirstName: usersObjectFromJava[i].first_name,
                LastName: usersObjectFromJava[i].last_name,
            };
            users[i] = u;
        }
    }
Run Code Online (Sandbox Code Playgroud)

有些人可以帮我用Java代码创建usersObjectFromJava,以便它可以在javascript中使用吗?

Nar*_*oni 9

使用GSON 将java对象转换为JSON字符串,你可以通过它来实现

Gson gson = new Gson();
TestObject o1 = new TestObject("value1", 1);
TestObject o2 = new TestObject("value2", 2);
TestObject o3 = new TestObject("value3", 3);

List<TestObject> list = new ArrayList<TestObject>();
list.add(o1);
list.add(o2);
list.add(o3);
Run Code Online (Sandbox Code Playgroud)

gson.toJson(列表)会给你

[{ "PROP1": "VALUE1", "PROP2":2},{ "PROP1": "VALUE2", "PROP2":2},{ "PROP1": "值3", "PROP2":3}]

现在,您可以使用JSON.parse()将JSON反序列化为Javascript对象.


bbu*_*erl 5

我会假设这样做:

Java的:

public void onCompleted(List<GraphUser> users, Response response) {
    JSONArray arr = new JSONArray();
    JSONObject tmp;
    try {
        for(int i = 0; i < users.size(); i++) {
             tmp = new JSONObject();
             tmp.put("Id",users.get(i).id); //some public getters inside GraphUser?
             tmp.put("Username",users.get(i).username);
             tmp.put("FirstName",users.get(i).first_name);
             tmp.put("LastName",users.get(i).last_name);
             arr.add(tmp);
        }

        webView.loadUrl("javascript:fetchFriends("+arr.toString()+")");         
    } catch(JSONException e){
        //error handling
    }
}
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function fetchFriends(usersObjectFromJava){
   var users = usersObjectFromJava;
}
Run Code Online (Sandbox Code Playgroud)

您将不得不稍微更改Java代码(即使用公共getter或向JSONObjects.中添加更多/更少的信息. JSON默认情况下包含在Android中,因此不需要外部库.

我希望我理解你的问题.

我遇到的小事:你fetchFriends在Java 中使用它但parseFriends在Javascript中调用它,我将它们重命名为fetchFriends