项目中需要解析一个200M的json目录文件,然后根据需要读取field
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class ReadJsonFile { private ObjectMapper mapper = new ObjectMapper(); public JsonNode readAsTree(Path jsonPath) throws Exception, IOException { JsonNode jsonNode = mapper.readTree(Files.newInputStream(jsonPath)); return jsonNode; } }
从路径为jsonPath的文件中读取了json字符串,然后转换成JsonNode
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SequenceWriter; public class WriteJsonFile { private ObjectMapper mapper = new ObjectMapper(); public void writeJsonFile(JsonNode rootNode, Path outputPath) throws IOException { SequenceWriter writer = mapper.writerWithDefaultPrettyPrinter() .writeValues(Files.newOutputStream(outputPath)); writer.write(rootNode); writer.close(); } }
把JsonNode对象转成json字符串写入到某个文件中,也可以是其他类型的对象
public void handleElements(JsonNode arrayNode) { Iterator<JsonNode> realElements = arrayNode.elements(); while (realElements.hasNext()) { JsonNode realElement = realElements.next(); System.out.println(realElement.toString()); } }
如果是一个JsonNode数组,比如这里的arrayNode,使用arrayNode.elements();读取数组中每个node
如果不是JsonNode数组arrayNode.elements();返回arrayNode的values
public void traverseJson(JsonNode jsonNode) throws IOException { Iterator<String> fieldNames = jsonNode.fieldNames(); while (fieldNames.hasNext()) { String fieldName = fieldNames.next(); System.out.println(fieldName); } }
jsonNode的fieldNames就是该jsonNode的所有的key值
public void traverseJson(JsonNode jsonNode) { Iterator<Entry<String, JsonNode>> jsonNodes = jsonNode.fields(); while (jsonNodes.hasNext()) { Entry<String, JsonNode> node = jsonNodes.next(); System.out.println(node.getKey()); System.out.println(node.getValue().toString()); } }
类似Map的Entry方式遍历某个JsonNode的key和value
value可能是字符串也可能是子jsonNode,但如果value是jsonNode数组的话,是无法读取的
public void traverseJson(JsonNode jsonNode) { List<JsonNode> jsonNodes = jsonNode.findParents("fieldName"); System.out.println(jsonNodes.size()); }
取出所有key值为fieldName的JsonNode的List
public void traverseJson(JsonNode jsonNode) { List<JsonNode> jsonNodes = jsonNode.findValues("fieldName"); System.out.println(jsonNodes.size()); }
取出所有key值为fieldName对应的value,这些values就是JsonNode的List
但是如果value中包含子jsonNode并且子jsonNode的key值也为fieldName,是无法捕获到并加入list的
public void traverseJson(JsonNode jsonNode) { JsonNode node1 = jsonNode.findValue("fieldName"); JsonNode node2 = jsonNode.findPath("fieldName"); }
取出key值为fieldName的一个value,匹配到一个就停止搜索,并且返回value
node1和node2的区别在于,如果没有匹配到任何key值为fieldName,node1为null,node2为空JsonNode
类似于
List<String> node1 = null; List<String> node2 = new ArrayList<>();
public void traverseJson(JsonNode jsonNode) { //{"name" : "xiaoLi"} String name = jsonNode.findValue("name").asText(); System.out.println(name); }
如果value为String,可以这样读取,其他类型可以jsonNode.findValue("name").asInt();
public void traverseJson(JsonNode jsonNode) { jsonNode.forEach((JsonNode node)->{ System.out.println(node.toString()); }); }
如果是JDK1.8的话,可以这样遍历JsonNode的子节点
以上
相关推荐
在Java编程中,处理JSON数据...Jackson库提供了丰富的API来应对这些情况,如`@JsonProperty`注解用于指定字段映射,`JsonNode`类用于处理JSON树等。不断探索和熟练使用这些工具,将使你在处理JSON数据时更加得心应手。
这个文件可能包含了读取JSON数据的示例代码,可能包括从文件、数据库或其他数据源读取JSON,然后使用ASPJSON库进行解析和操作。 总结,经典ASP处理JSON主要依赖于第三方库,如`aspjson`。通过学习这些技术,开发者...
一旦安装完成,你可以通过`require`来引入该模块,并使用其提供的函数来读取和解析JSON文件。以下是一个基本示例: ```javascript const loadJsonFile = require('load-json-file'); loadJsonFile('./path/to/your...
// 读取JSON文件内容 var treeNodes = JsonConvert.DeserializeObject<List<TreeNode>>(jsonData); ``` 步骤3:填充DevExpress TreeList 有了解析好的数据,我们就可以将其填充到TreeList控件中。首先确保在Form...
本教程将围绕Unity如何读取JSON数据进行讲解,并提供两种常用的库——LitJson和JSONObject。 首先,我们来看`ReadJson.cs`文件,这是Unity中处理JSON数据的核心代码。在Unity中,我们通常会创建一个C#类来映射JSON...
本教程将深入探讨如何在C#中解析JSON,并将其数据展示在TreeView控件上。 首先,我们需要引入一个JSON库来帮助我们解析JSON字符串。在.NET框架中,微软提供了一个名为`System.Text.Json`的内置库,自.NET Core 3.0...
本教程将详细讲解如何在Idea中使用Java解析JSON文件,并将数据有效地导入到MySQL数据库。 首先,我们需要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...
本文将深入探讨如何使用Java读取JSON数据,包括解析JSON字符串、处理JSON对象以及操作JSON数组。 首先,Java提供了多种库来处理JSON,其中最常用的两个是Jackson和Gson。这里我们将主要介绍Jackson库,它功能强大且...
3. **org.json库**:Android自带的JSON解析库,支持将JSON字符串转换为`JSONObject`和`JSONArray`,并提供相关的方法进行解析。 4. **Fastjson库**:阿里巴巴的高性能JSON库,适用于大量数据处理。 ### Android...
3. **JSON解析**:如果字符串是JSON格式,可以使用如`org.json`库或`com.google.gson`库来解析。以下是一个使用Gson的例子: ```java import com.google.gson.Gson; String jsonStr = "{\"name\":\"John\", \...
Node.js的`fs`模块提供了读写文件的能力,例如`fs.readFile()`和`fs.writeFile()`,可以用来读取和保存JSON数据到本地文件。 3. **用户登录**: 用户尝试登录时,通常会提供用户名和密码。在正常情况下,这些信息...
由于PowerBuilder内置对JSON的支持有限,开发者可能需要引入如JsonSimple、Gson或Jackson等库的PowerBuilder版本,或者使用JavaScript脚本引擎(如JScript或VBScript)来调用浏览器或Node.js中的JSON解析功能。...
总结来说,`json-stream-to-object`是JavaScript开发中的一个实用工具,它帮助开发者有效地解析JSON流数据,转化为可操作的对象。通过理解和使用这个库,可以提升处理JSON数据的效率,同时减少内存消耗,尤其是在...
一、JSON解析 1. JSON简介: JSON(JavaScript Object Notation)是一种简洁且易于阅读的数据格式,它基于JavaScript的一个子集。JSON支持两种基本结构:对象(键值对的集合,用花括号`{}`包围)和数组(有序的值...
- 解析JSON字符串成Java对象:使用上述库提供的方法,如Jackson的`ObjectMapper.readValue()`或Gson的`Gson.fromJson()`,将JSON字符串转化为指定类型的Java对象。 - 解析JSON到Map/ArrayList:如果不确定JSON的...
如果JSON数据存储在文件中,可以使用`ObjectMapper.readTree`读取JSON文件到JsonNode对象,然后进一步解析;也可以使用`ObjectMapper.writeValue`将Java对象写入JSON文件。 总结,Java中处理JSON数据的关键在于选择...
JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。在现代数据分析和Web应用中,JSON因其易读性和通用性而被广泛应用。 本资源提供了将GRIB2数据转换...
4. **解析JSON对象**:如果你已经有一个`JsonNode`对象,可以通过`findValue`,`get`等方法获取JSON对象的属性。 ```java JsonNode node = mapper.readTree(jsonString); String value = node.get("propertyName...
在Android中,常用的JSON解析库有Gson和Jackson。 1. Gson解析: Gson库是由Google提供的,可以直接将JSON字符串转换为Java对象,反之亦然。以下是一个使用Gson的例子: ```java String json = "{\"name\":\"John\...
读取文件并将其解析为json。 安装 npm i readjson --save 如何使用? const readjson = require ( 'readjson' ) ; const json = await readjson ( './package.json' ) ; // throws if file not found readjson ....