java - JSON从数组解析数组(JAVA)
问题描述
我有一个包含 JSON 文件信息的字符串。
static String JSON_STRING2 ="{\"lex\": {\"seg\": [ [ 0, 8 ], [ 9, 5 ], [ 15, 6 ] ], \"s\": [ [ 0, 21 ] ], \"p\": [ [ 0, 21 ] ]}, \"morphology\": { \"msd\": [ [ [ \"red\", \"Agpmsnn\" ], [ \"red\", \"Agpfpan\" ], [ \"red\", \"Agpmsvn\" ] ], [ [ \"flower\", \"Ncfsgn-\" ], [ \"flower\", \"Ncfpnn-\" ], [ \"flower\", \"Ncfpvn-\" ] ], [ [ \"blossom\", \"Ncmsnn-\" ] ] ], \"stem\": [ \"rr\", \"ff\", \"bb\" ]}}";
我想要做的是将这些数据保存到数组中以进行进一步的字符串比较任务,但目前我不知道如何到达“seg”层的底层并能够以 [0,8] 为例值按其在数组中的位置。据我所知,通过 get() 获取整个 Array 元素。我尝试循环数据,但大多数时候我以错误的数组或数组列表类型告终。
我的预览代码:
public static void main(String[] args) {
// Create root JSON Object
JSONObject object = new JSONObject(JSON_STRING2);
System.out.println("--------------------------------");
// Get Data Values
JSONObject LEX = object.getJSONObject("lex");
System.out.println("------------- Data Values ---------------");
System.out.println("Array Words : " + LEX.getJSONArray("seg").get(1));
System.out.println("Array Sentences : " + LEX.getJSONArray("s"));
System.out.println("Array Paragraphs : " + LEX.getJSONArray("p"));
System.out.println("--------------------------------");
// Get Data Values
JSONObject MORP = object.getJSONObject("morphology");
System.out.println("------------- Data Values ---------------");
System.out.println("Array wordCharacteristic : " + MORP.getJSONArray("msd"));}
任何提示或技巧?我在这里阅读了大量文章,其中没有一篇文章将熟悉的数据解析为我的。谢谢。
解决方案
首先,注意它JSONArray
是 0 索引的,就像 java 中的数组和列表一样。所以LEX.getJSONArray("seg").get(1)
返回第二个项目seg
,从而打印[9,5]
。
如果你想要第一个,只需使用LEX.getJSONArray("seg").get(0)
.
现在您可以迭代那些 JSONArray。有很多方法可以做到这一点,这是一种可能性:
for (Object seg : LEX.getJSONArray("seg")) {
JSONArray values = (JSONArray) seg;
for (Object objValue : values) {
int value = (int) objValue;
System.out.print(value + " ");
}
System.out.println();
}
将打印出来:
0 8
9 5
15 6
推荐阅读
- python-3.x - 在python 3中将浮点值打印为度数
- php - 在 PHP 上使用 cURL 发布数据
- python - 在python中按值搜索和按等比例搜索时使用枚举和字典
- javascript - React Native 无法从项目文件夹上方的文件夹中导入文件
- python - 用python编写一个过程,在列表中找到素数,并将它们存储在一个空列表中
- c - 以代码 139 退出(分段错误)
- tensorflow - 使用 Keras 将平滑多维函数逼近到 1e-4 的误差
- nlp - 使用 _save_word2vec_format() 以“word2vec”格式保存预训练的快速文本向量的问题
- python - 获取 NumPy 数组中最大区域的索引
- javascript - 使用 JSON 在 Typescript 中定义多种类型