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

我有一个具有以下内容的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 user

JsonObject 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);

}

我尝试使用上面的代码段,但是没有用。


莫回无
浏览 393回答 2
2回答

富国沪深

您必须初始化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++) {&nbsp; &nbsp; JSONObject element = scores.getJSONObject(i);&nbsp; &nbsp; SimilarUserScores object = new SimilarUserScores();&nbsp; &nbsp; object.setUser(element.getString("user"));&nbsp; &nbsp; object.setScore(element.getDouble("score"));&nbsp; &nbsp; objects.add(object);}前面的代码假定JSON在String变量中,并且您已经定义了SimilarUserScores类。此代码使用“ JSON”库。如果您使用的是maven,则可以导入它,并在pom.xml中的标记下添加以下代码段<dependencies><dependency>&nbsp; &nbsp; <groupId>org.json</groupId>&nbsp; &nbsp; <artifactId>json</artifactId>&nbsp; &nbsp; <version>20180130</version></dependency>

HUX布斯

您需要在自己的包装纸SimilarUserScores。老实说,您的内部类应该更好地命名 UserScorepublic class SimilarUserScores {&nbsp; &nbsp; private List<UserScore> similarUserScores;&nbsp; &nbsp; // Getter setter}public class UserScore {&nbsp; &nbsp; private String user;&nbsp; &nbsp; private double score;}现在针对SimilarUserScores类解析您的json
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java