我有一个具有以下内容的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);
}
我尝试使用上面的代码段,但是没有用。
答案 0 :(得分:4)
您必须初始化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>
答案 1 :(得分:1)
您需要在SimilarUserScores
周围使用包装纸。
老实说,您的内部类应该更好地命名为UserScore
public class SimilarUserScores {
private List<UserScore> similarUserScores;
// Getter setter
}
public class UserScore {
private String user;
private double score;
}
现在针对SimilarUserScores
类解析您的json