【问题标题】:JsonArray to Arraylist ConversionJsonArray 到 Arraylist 的转换
【发布时间】:2016-02-24 19:26:38
【问题描述】:

我需要将 Json 格式的 String 转换为 List 对象,我正在使用下面的程序来做。

public class JsonStringToListConversion {

    public static void main(String[] args) {
        String userProfile = "{\"name\":\"Arun\", Skills:[\"Java\",\"Spring\",\"hibernate\"]}";
        JSONObject userProfileJO = (JSONObject)JSONSerializer.toJSON(userProfile);
        List<String> skills = new ArrayList<String>();
        skills = (List<String>)userProfileJO.getJSONArray("Skills");
        System.out.println(skills);
    }
}

我正在使用 Java 1.6 和 JSON-lib 2.4

请帮助我知道这是否是正确的方法?

特别是我将 JSONArray 类型转换为 List 并且它是否正确?

【问题讨论】:

  • 我很惊讶铸造的工作原理?- 实际上JSONArray 需要迭代并填写列表。 Ex
  • 是的,正确的 Subhrajyoti Majumder 这也是我的疑问。

标签: java json


【解决方案1】:

在 Java 8+ 中,解决方案可以在一行中实现。

List<String> elementsList = myJsonArray.toList()
    .stream().map(x -> Objects.toString(x))
    .collect(Collectors.toList());

如果您想要一个不同的变量而不是 String,您可以更改列表 Vector 和适当的转换函数 (Objects.toString(object))。

【讨论】:

    【解决方案2】:

    您可以使用此代码块将 JSONArray 转换为 arraylist 对象。

    JSONArray jsonArray=new JSONArray();
    arrayList=new ArrayList();
    n=jsonArray.length();
    for (int i=0;i<n;i++)
         arrayList.add(jsonArray.get(i));
    

    编码愉快!!

    【讨论】:

      【解决方案3】:

      这个 JsonArray 在内部实现了列表接口,因此类型转换为列表非常好。此外,迭代每个元素将一个一个地访问列表,这将是开销(性能影响)。

      如果您需要其他方式,您可以使用来自同一个 JsonArray 类的 toCollection 静态方法

      【讨论】:

        猜你喜欢
        • 2013-06-06
        • 2015-07-30
        • 2016-10-29
        • 1970-01-01
        • 2011-06-18
        • 1970-01-01
        • 2014-03-24
        • 2023-03-27
        相关资源
        最近更新 更多