展示与处理复杂JSON数据——gradio库的JSON模块详解

news2025/1/13 15:58:01

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/397/

请添加图片描述

(封面图由文心一格生成)

展示与处理复杂JSON数据——gradio库的JSON模块详解

使用gradio库创建交互式界面的一个有趣的方法是使用JSON组件。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于表示复杂的数据结构。gradio的JSON模块可以用来漂亮地显示任意的JSON输出。

首先,让我们看一下如何使用gradio的JSON模块。通过调用gradio.JSON()函数并传入相应的参数,我们可以创建一个JSON组件。在示例中,我们展示了一个JSON对象,其中包含键值对、嵌套对象和列表。你可以根据自己的需求将合适的JSON数据传递给JSON组件。

from zipfile import ZipFile

import gradio as gr


def zip_to_json(file_obj):
    files = []
    with ZipFile(file_obj.name) as zfile:
        for zinfo in zfile.infolist():
            files.append(
                {
                    "name": zinfo.filename,
                    "file_size": zinfo.file_size,
                    "compressed_size": zinfo.compress_size,
                }
            )
    return files


demo = gr.Interface(zip_to_json, "file", "json")

if __name__ == "__main__":
    demo.launch()

JSON组件可以作为gradio界面的输入或输出。作为输入时,它不接受用户输入,而是期望传入一个有效的JSON字符串、字典或列表。作为输出时,它将显示传入的JSON数据。

除了显示JSON数据,gradio的JSON组件还具有一些参数可以自定义其外观和行为。例如,你可以设置组件的标签、容器样式、宽度比例等。可以根据需要调整这些参数,以满足特定的界面需求。

此外,JSON组件还提供了一个重要的方法——change()。通过调用JSON.change()方法,我们可以为组件的值更改事件注册一个回调函数。这个回调函数可以在用户输入或函数更新时被触发。当组件的值发生变化时,回调函数将被调用,并执行相应的操作。

下面是JSON.change()方法的一些参数:

  • fn:需要包装成接口的函数,通常是一个机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,其中元组的每个元素对应一个输出组件。
  • inputs:用作输入的组件列表。如果函数不需要输入,应该传入一个空列表。
  • outputs:用作输出的组件列表。如果函数不返回输出,应该传入一个空列表。
  • 其他参数用于定义事件的行为,如是否将请求放入队列、是否支持批处理等。

使用change()方法,我们可以轻松地将函数与JSON组件关联起来,实现在用户交互或函数更新时的自动处理。这种机制为开发交互式界面提供了更大的灵活性和交互性。

在使用gradio库时,JSON组件是一个非常有用的工具,它可以帮助我们漂亮地显示和处理复杂的JSON数据。通过合理设置参数和使用change()方法,我们可以创建出功能强大且易于使用的交互式界面。

参数详解

JSON模块参数

参数数据类型默认值描述
valuestr | dict | list | Callable | NoneNone默认值。如果是可调用对象,当应用程序加载时,将调用该函数以设置组件的初始值。
labelstr | NoneNone接口中组件的名称。
everyfloat | NoneNone如果value是可调用对象,则在客户端连接打开时每隔指定的时间运行该函数。否则,没有任何效果。队列必须启用。此事件可以通过该组件的.load_event属性访问(例如取消该事件)。
show_labelboolTrue如果为True,则显示标签。
containerboolTrue如果为True,则将组件放置在容器中,提供一些额外的边框填充。
scaleint | NoneNone相对于相邻组件在一行中的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,则A的宽度将是B的两倍。应为整数。
min_widthint160最小像素宽度,如果屏幕空间不足以满足此值,则换行。如果某个scale值导致此组件比min_width更窄,则首先会考虑min_width参数。
visibleboolTrue如果为False,则隐藏组件。
elem_idstr | NoneNone可选的字符串,用作此组件在HTML DOM中的id。可用于定位CSS样式。
elem_classeslist[str] | str | NoneNone可选的字符串列表,用作此组件在HTML DOM中的类。可用于定位CSS样式。

change方法参数

参数数据类型默认值描述
fnCallable | Nonerequired要在接口周围包装的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,其中元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的Gradio组件列表。如果函数不接受任何输入,则应为空列表。
outputsComponent | list[Component] | NoneNone要用作输出的Gradio组件列表。如果函数不返回任何输出,则应为空列表。
api_namestr | NoneNone定义此参数会在API文档中显示端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为True,则在完成
queuebool | NoneNone如果为True,则将请求放入队列(如果已启用队列)。如果为False,则即使已启用队列,也不会将此事件放入队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size),然后函数 必须 返回元组列表(即使只有一个输出组件),其中元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,则最大批处理输入数量(仅在batch=True时相关)。
preprocessboolTrue如果为False,则在运行’fn’之前不运行组件数据的预处理(例如,如果使用Image组件以base64字符串形式调用此方法,则保留为base64字符串)。
postprocessboolTrue如果为False,则在将’fn’的输出返回给浏览器之前不运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone要在此监听器触发时取消的其他事件列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的时间运行此事件。以秒为单位解释。队列必须启用。

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从小白到大神之路之学习运维第54天--------ELK技术堆栈---

第三阶段基础 时 间:2023年7月6日 地 点:2304教室 授课人:李凤海 参加人:全班人员 内 容: ELK技术堆栈 目录 服务器设置: 部署elasticsearch集群: 配置elasticsearch集群&#xff…

Vue2中使用ElementUI组件Form组件的校验validate

先准备一些el-form元素 这里面el-form中:model(v-bind:model)是单项绑定的,如果你写成了v-model""可能会出现校验没有效果的情况。 这是校验过后的结果了 现在开始使用下吧! 1.在el-form中绑定一个ref,名字自拟,后续触发检验结果…

【数据分析 - 基础入门之NumPy②】Jupyter Notebook安装及使用

知识目录 前言一、Jupyter Notebook安装使用1.1 Jupyter Notebook的三种打开方式1、点击Anaconda Prompt打开2、点击Jupyter Notebook打开3、使用Powershell打开 1.2 Jupyter Notebook的两种键盘输入模式1、编辑模式2、命令模式 二、Jupyter Notebook魔法命令2.1 查看帮助文档2…

2023-07-06:RabbitMQ中的AMQP是什么?

2023-07-06:RabbitMQ中的AMQP是什么? 答案2023-07-06: AMQP AMQP(Advanced Message Queuing Protocol)是一个应用层协议的开放标准,旨在设计面向消息的中间件。基于AMQP协议的客户端和消息中间件可以自由…

Mysql中IP地址如何在数据库中存储

用无符号的32位整数存储,不要用字符串存储ip 为什么呢? 在Mysql中,当存储ipv4地址的时候,应该使用32位的无符号(int unsigned)来存储ip地址,而不是使用字符串,用int unsigned类型存…

4-Spring cloud之搭建Ribbon负载均衡——服务器上实操(下)

4-Spring cloud之搭建Ribbon负载均衡——服务器上实操(下) 1. 前言1.1 Ribbon负载均衡架构图 2. Ribbon自带的负载均衡2.1 Ribbon自带的负载均衡算法2.2 自带负载均衡之间的切换 3. Ribbon自定义负载均衡3.1 自定义Ribbon负载均衡(简单试用&a…

【IMX6ULL - LOGO替换】根文件系统主机名logo替换教程

1、修改linux主机的配置文件/etc/hostname里的主机名 2、重启 reboot

2023电商购物网站有哪些知名和靠谱的?

最近几年,人们的消费方式发生了极大的改变,在这种趋势之下,很多企业都开始着手搭建自己的网购平台,下面是小编盘点的国内市场上较为出名的网购平台,大家可以借鉴其运营模式! 1、淘宝网 在中国,淘宝网可以说…

推荐这10款好用的产品设计软件,轻松提效

在现代技术飞速发展的时代,产品设计是创新和成功的关键。本文将向您推荐10款顶级产品设计软件,为您的设计过程增添灵感和效率。 1、即时设计 即时设计是一个基于云的产品设计协作一体化工具,具有很强的功能和灵活性,它提供了全面…

详细解读Sui Gas运作机制和其他你不知道的细节

Sui的Gas费模型使链上交互费用变得可预测而且更低廉,这两个关键特征对面向全球范围内的娱乐和实用apps的基础设施十分关键。区块链的Gas费是指处理事务需要支付的价格,用于补偿和奖励支持网络运行的服务商。 通常,用户支付Gas费来执行网络上…

Webpack打包ts文件

安装依赖包: npm i -D webpack webpack-cli typescript ts-loader 配置webpack配置文件(webpack.config.js): //webpack中所有的配置文件信息都得写在module.exports中 module.exports{//指定入口文件entry:./src/index.ts//指定…

terminal 终端Ctrl+Shfit+E键与搜狗输入法冲突Linux

下载完搜狗输入法后,发现CtrlShfitE不能在终端分屏了,原因是和搜狗的快捷键冲突了,把搜狗的禁用了或者换成其它快捷键即可 界面右上角打开搜狗拼音,点击属性设置 把勾去掉或者换其它快捷键

eladmin环境搭建

1、参考这里的简介、快速了解、快速开始 简介 | ELADMIN 在线文档 2、后台我用的是Idea,要记得安装jdk、下载maven,Idea中要记得核对Settings、Project Structure的jdk、maven相关配置。同时也要核对数据库配置是否是好的,数据库是否能连接…

不同ts文件下,提示变量名重复的问题解决

同一个目录的不同文件下使用同一个变量名称出现报错 是因为ts的文件默认是全局文件 发现即使在标签栏关闭 也无法解决, 可以尝试在 报错的文件上加上 export{},即可完美解决

实战 |记一次简单渗透测试实战

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,鹏组安全及文章作者不为此承担任何责任。 在进行渗透测试时,首先需要进行的是信…

系统分析师下午案例真题及解析(2022-2020年)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 2022年案例真题 真题1 阅读以下关于软件系统分析与建模的叙述,在答题纸上回答问题1至问题3。 【说明】 某软件公司拟开发一套博客系统&#xf…

Java使用ClassLoader读取外部json文件

我们有时候会遇到这样一种业务场景:某个对象是变化的,在不同项目的部署中,可能需要更改对象中的某个属性,这时如果我们将该对象写在代码里,这样不仅寻找不便,部署后也不能随便修改(修改后又要重…

9个面试模板:招聘经理的问题和指南

有效的面试让我们更好的提升招聘效率,招聘经理和招聘人员可以使用面试模板确保高效快捷地进行面试。 面试模板有助于构建面试流程,为向候选人提问和记录他们的答案创建一个一致的框架。支持不同公司自定义面试模版,面试模版还可以更轻松地对…

Win10开始菜单打不开怎么办?Win10开始菜单打不开解决方法

Win10开始菜单打不开怎么办?当用户在Win10系统上遇到开始菜单打不开的问题时,可能会导致无法方便地访问和运行应用程序、设置等功能,这时候用户可以重启一下Win10电脑的任务管理器来解决问题,以下就是Win10开始菜单打不开解决方法…

撕去“械字号”标签,敷尔佳靠营销还能走多远?

回顾刚刚过去的六月,美妆护肤板块回暖趋势继续保持。 据数据显示,6 月淘系、抖音合计美妆GMV同比增长约13%,其中,护肤、彩妆分别同比增长14%、11%。而据美加漾科技披露的《2023年618护肤市场大数据调研》显示,护肤品市…