blob数据与json数据互相转换

本文介绍如何在前端展示从后端获取的Excel文件流,并在无数据或接口错误时通过转换Blob为JSON数据来显示错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求前端获取后端的Excel文件流显示在页面上,当查询条件无数据或接口报错需要$message.error(),需要我们将请求回的blob数据转换json数据才能抛出提示见代码
//res接口请求回的数据
if (res.data.type == "application/json") {
   let reader = new FileReader();
    reader.readAsText(res.data, "utf-8");
    reader.onload = (e) => {
      let readerres = reader.result;
      let parseObj = {};
      parseObj = JSON.parse(readerres);
      window.location.href = parseObj.data;
    };
  }
<think>嗯,用户想了解数据JSON交互的相关信息,特别是处理方式和支持JSON数据库类型。首先,我需要回忆一下常见的数据库类型,比如关系型和非关系型数据库,以及它们对JSON的支持情况。 关系型数据库方面,MySQL从5.7版本开始引入了JSON数据类型,支持存储和查询JSON数据,还有相关的函数。PostgreSQL也有强大的JSONB类型,性能更好。SQL Server 2016及以后版本也支持JSON函数。Oracle同样有JSON支持,可能使用BLOB或VARCHAR2类型存储,并提供函数处理。 然后是NoSQL数据库,比如MongoDB,它本身就是文档型数据库,数据以BSON(类似JSON)格式存储,自然支持。Couchbase和Firebase也支持JSON结构,适合灵活的数据模型。 接下来是处理方式,包括存储机制。有些数据库用原生JSON类型,如MySQL的JSON,PostgreSQL的JSONB;有些用字符串类型,比如早期版本可能用TEXT或VARCHAR,但这样需要应用层解析。查询方面,关系型数据库可能用函数提取字段,比如MySQL的JSON_EXTRACT,而MongoDB可以直接用点号操作符。索引方面,PostgreSQL的JSONB可以建索引,MySQL也能在虚拟列上建索引,优化查询性能。数据转换方面,像Spring Batch这样的工具可以用JsonItemReader处理JSON数据,应用层序列化反序列化也常用Jackson或Gson库。 用户可能的应用场景包括存储动态结构数据、日志或配置文件,或者需要灵活扩展字段的情况。需要注意数据验证,因为JSON的灵活性可能导致无效数据存入;性能方面,频繁解析字符串会影响效率,所以原生JSON类型更好;索引策略也要合理设计,避免查询慢。 引用方面,需要根据提供的引用内容来标注。比如MySQL的JSON函数和类型在引用[1],JSON数据类型在引用[2],存储处理在引用[3],Spring Batch处理在引用[4]。需要确保每个引用正确对应相关内容。 可能用户的实际需求是在项目中处理数据库和JSON的交互,比如选择合适的数据类型,优化查询性能,或者处理数据转换的问题。需要给出具体的例子,比如MySQL的查询语法,或者MongoDB的存储方式,帮助用户理解。 还要注意生成相关问题,比如如何优化JSON查询性能,或者不同数据库的对比,应用场景举例等。确保问题覆盖用户可能感兴趣的后续点。 总之,我需要组织信息,分点说明支持的数据库类型,处理方式,应用场景,注意事项,并正确引用资料中的内容。确保回答结构清晰,示例具体,帮助用户全面理解数据JSON的交互方法。</think>### 数据JSON数据交互详解 #### 一、支持JSON数据库类型 1. **关系型数据库** - **MySQL** 支持JSON数据类型(从5.7版本开始),提供JSON函数如$JSON_EXTRACT$、$JSON_SET$等,支持直接查询JSON字段的嵌套属性[^1]。 ```sql SELECT JSON_EXTRACT(user_info, '$.name') FROM users; ``` - **PostgreSQL** 提供JSONJSONB两种类型,其中JSONB以二进制存储,支持索引和高效查询[^2]。 - **SQL Server** 从2016版本开始支持JSON函数(如$OPENJSON$、$JSON_VALUE$),可将JSON数据转换为表结构[^2]。 - **Oracle** 支持JSON存储(通过BLOB或VARCHAR2),提供JSON函数和路径表达式查询。 2. **NoSQL数据库** - **MongoDB** 原生支持BSON(二进制JSON)格式,支持嵌套查询、聚合操作和地理空间索引。 - **Couchbase** 基于JSON文档存储,支持N1QL(类似SQL的查询语言)和全文检索。 - **Firebase/Firestore** 面向移动和Web应用,数据JSON格式存储,支持实时同步[^2]。 --- #### 二、JSON数据处理方式 1. **存储机制** - **原生JSON类型**(如MySQL的JSON、PostgreSQL的JSONB): 支持数据验证、索引优化和复杂查询。 - **字符串类型**(如TEXT或VARCHAR): 需应用层解析JSON字符串,灵活性高但性能较低[^3]。 2. **查询操作** - **关系型数据库**:通过特定函数提取JSON字段,例如: ```sql -- MySQL示例 SELECT user_info->'$.address.city' FROM users WHERE user_info->'$.age' > 25; ``` - **NoSQL数据库**:直接使用点号操作符,如MongoDB的`db.collection.find({"address.city": "Beijing"})`。 3. **索引优化** - PostgreSQL可为JSONB字段创建GIN索引加速查询。 - MySQL通过生成虚拟列并对其建立索引优化JSON字段查询。 4. **数据转换** - **应用层序列化**:使用Jackson(Java)、Gson(Android)等库将JSON对象互相转换。 - **ETL工具**:如Spring Batch的`JsonItemReader`,支持从JSON文件批量导入数据数据库[^4]。 --- #### 三、典型应用场景 1. 存储动态结构数据(如用户配置、日志信息)。 2. 实现半结构化数据模型(如电商产品的可变属性)。 3. 作为API交互的中间格式(如RESTful接口返回JSON数据)。 --- #### 四、注意事项 1. **数据验证**:原生JSON类型会校验格式有效性,而字符串类型需手动验证。 2. **性能影响**:频繁解析字符串类型JSON可能降低查询效率。 3. **索引策略**:对高频查询的JSON字段需单独建立索引。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值