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

如何将Json数组转换为Java对象数组,java,json,gson,Java,Json,Gson,我有一个json对象,它包含以下内容: { "similarUserScores":[ { "user":"u26", "score":0.6199970840986468 }, { "user":"u37", "score":0.5405403752816058 }, { "user":"u12", "score":0.5

我有一个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);
}

我试图使用上面的代码片段,但它没有起作用。

你需要一个包装器来包装你的
相似的用户分数

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

public class SimilarUserScores {
    private List<UserScore> similarUserScores;
    // Getter setter
}

public class UserScore {

    private String user;

    private double score;
}
公共类相似用户分数{
私人列表相似用户分数;
//吸气剂设定器
}
公共类用户分数{
私有字符串用户;
私人双积分;
}

现在,根据
SimilarUserScores
类分析json,您需要在
SimilarUserScores
周围安装一个包装器

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

public class SimilarUserScores {
    private List<UserScore> similarUserScores;
    // Getter setter
}

public class UserScore {

    private String user;

    private double score;
}
公共类相似用户分数{
私人列表相似用户分数;
//吸气剂设定器
}
公共类用户分数{
私有字符串用户;
私人双积分;
}

现在根据
SimilarUserScores
class

解析json,您必须初始化
JSONObject
ArrayList

然后您必须获取
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);
}

您必须初始化
JSONObject
ArrayList

然后您必须获取
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);
}

嗨,你能描述一下如何解析它吗?嗨,你能描述一下如何解析它吗?@Paras,如果对你有帮助,你能接受这个答案吗?@Paras,如果对你有帮助,你能接受这个答案吗?