为了账号安全,请及时绑定邮箱和手机立即绑定

如何将Json数组转换为Java对象数组

如何将Json数组转换为Java对象数组

莫回无 2021-04-27 17:25:03
我有一个具有以下内容的json对象:{   "similarUserScores":[      {         "user":"u26",         "score":0.6199970840986468      },      {         "user":"u37",         "score":0.5405403752816058      },      {         "user":"u12",         "score":0.523836143999991      },      {         "user":"u24",         "score":0.4990480549411648      }   ]}我需要将其转换为Java对象。所以我创建了一个Java类来映射它:public class SimilarUserScores {    private String user;    private double score;    public String getUser() {        return user;    }    public void setUser(String user) {        this.user = user;    }    public double getScore() {        return score;    }    public void setScore(double score) {        this.score = score;    }}那么如何将上述JSON转换为Java对象列表?//Get Recommendations for this userJsonObject recommendedUserJson  = PredictionIoClientHelper                                       .getInstance().getRecommendedUser("u"+userId, limit);if(recommendedUserJson != null) {    Gson gson = new Gson();    String jsonString = recommendedUserJson.toString();    SimilarUserScores[] recommendedUsers= gson.fromJson(jsonString, SimilarUserScores[].class);}我尝试使用上面的代码段,但是没有用。
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

您必须初始化JSONObject和ArrayList<SimilarUserScores>。


然后,您必须获取JSONArray并对其进行迭代。


对于每次迭代,您都将数据设置到对象中,然后将其附加到输出列表中。这是一个工作代码示例:


import java.util.ArrayList;

import org.json.JSONArray;

import org.json.JSONObject;


String s = "{\"similarUserScores\":[{\"user\":\"u26\",\"score\":0.6199970840986468}, ...


ArrayList<SimilarUserScores> objects = new ArrayList();

JSONObject obj = new JSONObject(s);

JSONArray scores = obj.getJSONArray("similarUserScores");

for (int i = 0; i < scores.length(); i++) {

    JSONObject element = scores.getJSONObject(i);

    SimilarUserScores object = new SimilarUserScores();

    object.setUser(element.getString("user"));

    object.setScore(element.getDouble("score"));

    objects.add(object);

}

前面的代码假定JSON在String变量中,并且您已经定义了SimilarUserScores类。此代码使用“ JSON”库。如果您使用的是maven,则可以导入它,并在pom.xml中的标记下添加以下代码段<dependencies>


<dependency>

    <groupId>org.json</groupId>

    <artifactId>json</artifactId>

    <version>20180130</version>

</dependency>


查看完整回答
反对 回复 2021-05-26
?
HUX布斯

TA贡献1876条经验 获得超6个赞

您需要在自己的包装纸SimilarUserScores。


老实说,您的内部类应该更好地命名 UserScore


public class SimilarUserScores {

    private List<UserScore> similarUserScores;

    // Getter setter

}


public class UserScore {


    private String user;


    private double score;

}

现在针对SimilarUserScores类解析您的json


查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 392 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信