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中使用吗?
使用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对象.
我会假设这样做:
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
| 归档时间: |
|
| 查看次数: |
25185 次 |
| 最近记录: |