weixin_46314775 2023-01-10 20:20 采纳率: 28.6%
浏览 30
已结题

如何解析数组字符串,

"tx":"[["49","54","2.10","12"],["3","2","2.10","1"]]"这种结构如何解析呢,我试了很多办法都不行
我想要的是结果是这样:
String xx1=49
String xx2=54
String xx3=2.10
String xx4=12
!!!

  • 写回答

4条回答 默认 最新

  • m0_54204465 2023-01-10 20:43
    关注

    在 Java 中,可以使用 JSON 库来解析字符串数组。Jackson 是一个非常常用的 JSON 库,可以很方便地将 JSON 字符串转换为 Java 对象。

    首先需要安装 Jackson 的依赖,如下:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.12.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.0</version>
    </dependency>
    
    

    然后可以通过如下代码来解析 JSON 字符串数组

    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    String jsonString = "{\"tx\":[[\"49\",\"54\",\"2.10\",\"12\"],[\"3\",\"2\",\"2.10\",\"1\"]]}";
    ObjectMapper mapper = new ObjectMapper();
    JsonNode rootNode = mapper.readTree(jsonString);
    JsonNode txNode = rootNode.path("tx");
    
    for (int i = 0; i < txNode.size(); i++) {
        JsonNode innerNode = txNode.get(i);
        String xx1 = innerNode.get(0).asText();
        String xx2 = innerNode.get(1).asText();
        String xx3 = innerNode.get(2).asText();
        String xx4 = innerNode.get(3).asText();
        System.out.println(xx1+","+xx2+","+xx3+","+xx4);
    }
    
    

    第一行是JSON字符串,后面的代码中通过ObjectMapper将字符串解析为 JsonNode, 然后通过循环遍历 txNode 获取每个内部节点,使用innerNode.get(i).asText()来获取对应的值,最后打印出来

    PS:如果需要更具体的数据类型转换可以通过innerNode.get(i).asDouble(), innerNode.get(i).asInt()等函数来进行转换,转换为对应的数字类型。

    另外, 如果你需要使用更高级的 JSON 功能,可以使用 Gson 库,它支持将 JSON 字符串转换为 Java 对象,并支持自动将对象转换为 JSON 字符串。

    首先需要添加 gson 依赖

    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.6</version>
    </dependency>
    
    

    然后你可以使用 Gson 来将 JSON 字符串转换为 Java 对象

    import com.google.gson.Gson;
    
    String jsonString = "{\"tx\":[[\"49\",\"54\",\"2.10\",\"12\"],[\"3\",\"2\",\"2.10\",\"1\"]]}";
    Gson gson = new Gson();
    JsonNode jsonNode = gson.fromJson(jsonString, JsonNode.class);
    JsonNode txNode = jsonNode.get("tx");
    
    for (int i = 0; i < txNode.size(); i++) {
        JsonNode innerNode = txNode.get(i);
        String xx1 = innerNode.get(0).asText();
        String xx2 = innerNode.get(1).asText();
        String xx3 = innerNode.get(2).asText();
        String xx4 = innerNode.get(3).asText();
        System.out.println(xx1+","+xx2+","+xx3+","+xx4);
    }
    
    

    解析方法类似,只是使用 Gson来解析Json字符串。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 创建了问题 1月10日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法