如何将Json数组转换为Java对象数组
我有一个json对象,它包含以下内容:如何将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
{
"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,如果对你有帮助,你能接受这个答案吗?