将Java List转换为Javascript数组

 多米音乐_34216717 发布于 2023-02-04 16:20

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

Java的:

public void onCompleted(List 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)");        
    }               
 }

使用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;
        }
    }

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

2 个回答
  • 使用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);
    

    gson.toJson(列表)会给你

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

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

    2023-02-04 16:21 回答
  • 我会假设这样做:

    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
        }
    }
    

    JavaScript的:

    function fetchFriends(usersObjectFromJava){
       var users = usersObjectFromJava;
    }
    

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

    我希望我理解你的问题.

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

    2023-02-04 16:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有