我有一个包含以下内容的 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);
}
我尝试使用上面的代码片段,但它没有用。
最佳答案
你必须初始化一个 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
类(class)。
此代码使用“JSON”库。如果您使用的是 maven,则可以导入它,在 pom.xml 中的标签 <dependencies>
下添加以下代码片段
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
关于java - 如何将 Json 数组转换为 Java 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51325103/