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

标签 java json gson

我有一个包含以下内容的 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/

相关文章:

java - jackson JSON 翻译

java - Json:使用接口(interface)泛型列表反序列化接口(interface)类

java - 将 JSON 解析为 Map

java - while 循环,为 java 中的下一个 while 循环存储值

c++ - 如何使boost ptree以相同的方式解析xml和json?

mysql - 一列或单独的列用于额外数据 - mysql

java - JsonSyntaxException - 预期为 BEGIN_OBJECT,但实际为 BEGIN_ARRAY

java - 官方(且丑陋的)顺序组合的替代方案

java - 当 subview 可用时从父 fragment 调用子 fragment 方法?

java - 将用户的字符串输入与字符串数组进行比较