如何解析数组字符串,

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

在 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字符串。

实现步骤和实现代码如下:

  • 首先使用 Gson 将字符串转换为 JsonObject。
  • 然后,它使用 get("tx") 方法获取 "tx" 对应的 JsonArray。
  • 接下来,它使用 for-each 循环遍历每个 JsonElement,并将其转换为 JsonArray。
  • 最后,它使用 get(0)、get(1)、get(2) 和 get(3) 方法获取每个数组中的值。
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

String jsonString = "{\"tx\":[[\"49\",\"54\",\"2.10\",\"12\"],[\"3\",\"2\",\"2.10\",\"1\"]]}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class);
JsonArray jsonArray = jsonObject.get("tx").getAsJsonArray();
for (JsonElement element : jsonArray) {
    JsonArray subArray = element.getAsJsonArray();
    String xx1 = subArray.get(0).getAsString();
    String xx2 = subArray.get(1).getAsString();
    String xx3 = subArray.get(2).getAsString();
    String xx4 = subArray.get(3).getAsString();
    // Do something with xx1, xx2, xx3, xx4
}

用正则表达式提出来所有数字即可。望采纳!!!!

这种与规律的典型字符串,可以使用JSON解析成字符串数据即可。