当前位置: 首页 > 知识库问答 >
问题:

如何将JsonString的JsonArray转换为字符串列表

狄令
2023-03-14

这个问题的范围是JSON处理的JavaAPI(JSR 353)。

给定一个元素为JsonString的JsonArray,我如何轻松地将其转换为列表

假设我有一个这样的JSON对象:

{
  "name" : "James Johns",
  "street" : "22 Nancy St.",
  "emails" : [
               "james@a.com",
               "james@b.net",
               null,
               ""
             ]
}

我希望生成的集合忽略电子邮件数组中的任何null或空字符串条目。

假设我的JsonObject实例已经创建。

JsonObject person = <parse the JSON input>;
JsonArray emails = person.get("emails");

我一直被JsonValue和JsonString难住,试图得到实际的字符串值。如果我使用JsonValue。toString()JsonString。toString()方法,我得到包含双引号的字符串值,就像原始JSON是“\”james@a.com\“”。我需要字符串值是等效的JSON值”james@a.com“


共有1个答案

令狐宣
2023-03-14

使用Java 8,可以轻松地将JsonString的JsonArray转换为如下列表:

JsonObject person = <parse the JSON input>;

List<String> emailList = 
    Optional.ofNullable(person.getJsonArray("emails"))
            .orElse(JsonValue.EMPTY_JSON_ARRAY) // Use an empty list if the property's value was null
            .getValuesAs(JsonString::getString) // Get each JsonString entry as String
            .stream()                           // Turn the collection into a stream for filter/collect
            .filter(email -> email!=null && !email.isEmpty())  // Exclude any null/empty entries
            .collect(Collectors.toList());                     // Create the List

  • nullable/orElse的组合保证了我可以得到一个JsonArray,即使该数组是空的,也可以避免任何空指针异常的考虑
  • getValuesAs(JsonString::getString)是一个JsonArray方法,通过应用JsonString返回列表。getString()方法调用每个返回的JsonString。JsonString。getString()方法返回字符串值“james@a.com而不是“\”james@a.com\“JsonString的值。toString()方法返回
  • stream()方法将集合转换为一个顺序流,我们可以使用它来过滤和收集原始集合的成员
  • filter()方法应用谓词email-

获取集合

.collect(Collectors.toSet())

一旦您习惯了Java8机制,这种方法就提供了一种简洁、易于阅读和理解的技术来操作集合,而无需更复杂的空/空检查和使用for循环的方法。

 类似资料:
  • 完整的蓝牙聊天服务类:https://github.com/frcteam1501/frcrecyerushpitscouter/blob/master/app/src/main/java/org/huntingtonrobotics/frcrecyerushpitscouter/bluetoothchat/bluetoothchatfragment.java 完整的蓝牙聊天片段类:https:/

  • 问题内容: 您如何将此String转换为gson.JsonArray? 这是我的代码: 这是将这个Collections字符串转换为JSonArray的方法吗? 问题答案: 要在JSON数组中包含字符串值,必须记住在Java程序中用反斜杠转义双引号。请参见下面的声明。 您在main()方法中的代码可以正常工作。以下只是对main()方法中的代码的微小修改。 最后,请记住在语句“ com.googl

  • 问题内容: 我想问一个有关将a转换为on的问题。这是我从服务器获取的代码。 这就是。 我怎样才能将我拥有的jsonArray转换为StringArray,这样我就可以得到StringArray: 谢谢您的帮助 :) 问题答案: 看一下本教程。您也可以像上面这样解析json:

  • 问题内容: 我从服务器收到以下响应: 我需要将其转换为。有什么帮助吗? 顺便说一句,我尝试了一下,但它不起作用: 我得到错误: 问题答案: 如果您正在谈论在Java库中使用JSON,那么由于您的输入字符串是JSON对象,而不是JSON数组,因此您应该首先使用JSONObject加载它: 之后,您可以使用toJSONArray()将给定的键字符串数组将JSONObject转换为JSONArray:

  • 问题内容: 如何使用Python将列表转换为字符串? 问题答案: 通过使用 或者,如果列表是整数,则在连接元素之前将其转换。

  • 问题内容: 我需要将String []转换为JsonArray,但我不知道如何。我是android开发的新手,我想在MySQL数据库中插入通话记录详细信息。因此,从android方面,我得到一个字符串,但是我不知道如何将该字符串转换为Jsonarray。请帮助解决这个问题,谢谢 这是我的Java代码....... 问题答案: 试试这个,