粉丝25获赞280

什么是 jason skin? 简单说,它是一份用 jason 写成的数据说明书,专门规定一段 jason 数据应该长成什么样。在方式拷令背后,它扮演的是参数规范的制定者。 模型要调用函数前,必须先知道自己可以返回哪些字段,字段是什么类型,哪些必填,哪些可选。论文将把这件事拆开讲清楚,包括 jason schemer 的 核心组成,它如何约束模型输出一个完整调用流程,以及它的能力边界。先回到 jason 本身, getson 是 一种轻量级数据格式,主要由对象数组、自附串数字、不尔值和 non 组成。它很适合机器间传数据,但 getson 只负责装数据,不负责管数据。比如一个 a 级字段,有人写成数字三十,有人写成自附串三十, 还有可能漏掉。 jason 本身不会报错,更不会告诉你这是不是合法数据。 jason scam 就是 为了补上这一层约束。它本身也是一段 jason, 只不过这段 jason 描述的是另一段 jason 的 结构。你可以把它理解成数据库表结构或者代码里的类型定义, 但它是语言无关,平台无关的。 json 里有几个最核心的关键字, type。 声明字段类型,比如 string, integer, number, boolean, array, object, properties。 声明对象内部可以有哪些字段, require 的是一个数值, 列出哪些字段必须出现,缺一个都算不合格。 additional properties 控制是否允许出现没在 properties 里声明的字段, 如果设成 false, 多一个字段都会较验失败。 items 用来约束数组里每个元素的类型。 annum 直接给出可选值集合,比如温度单位只能是 celsius 或 fahrenheit, minimum 和 maximum 约束数字范围。 description 则负责给字段写自然语言说明,这些关键字组合起来就能把模糊的给我一个用户。信息变成精确的必须包含字母串 name、 整数 age, 且 age 不 小于零。为什么 function calling 特别需要它?因为大模型的核心输出是文本,不是结构化对象。如果没有约束,模型,可能把函数参数写成各种格式,甚至漏掉关键参数。 function calling 的 目标是让模型在需要时返回一个函数名和一组 json。 参数由外部代码真正执行。 要让这件事可靠,就必须提前把参数规范告诉模型。 json schema 在 这里就像一份接口合同。模型看到 schema 后,目标不再是自由聊天, 而是生成一段符合这份合同的 json。 比如定义 get 下划线 weather 函数。 schema 要求 city 是 必填字母串, unit 是 可选美举, 且只能是 celsius 或 fahrenheit。 用户问北京今天多少度,模型就会倾向于返回 city 为北京, unit 为 celsius 的 参数。如果用户没有提供城市,模型更可能选择不调用函数或先追问, 而不是随便填一个城市,一个完整的方身。 calling 流程通常是这样,开发者先把函数名函数描述和 jason skimmer 随对话一起发给模型。模型根据上下文判断是否需要调用工具,如果需要,就输出一个结构化响应, 里面包含函数名和一段接参。参数。系统拿到这段接参,会用事先定义好的接参 skin 做校验,校验通过才真正执行函数,并把结果送回对话。校验不通过,有的实现会直接报错,有的会带着错误信息让模型重新生成。这个过程里, skimmer 既是生成阶段的提示,也是验证阶段的判据。它让参数质量从大概率对变成可检查、可拦截。举一个更具体的例子,假设我们要做一个订单查询工具参数 skimmer 规定 order 下划线 id 是 必填字母串, status 是 可选的,美举 只接受 paid、 shift canceled 三个值。用户说,帮我查一下订单 a 一 百二十三的物流 模型可能输出函数名 query 下划线 order 和参数 order 下划线 id a 一 百二十三。如果用户只说查一下我的订单模型,因为拿不到 order 下划线 id, 通常不会随意编造一个订单号,而是选择追问或返回需要补全参数的提示。这就是 summa 在 起作用。它没有教模型怎么说话,但明确划出了合法参数的样子, 压缩了模型自由发挥的空间。不过也要清楚 jason schema 的 能力边界,它能约束结构和基本类型,但并不是万能的。比如如果用户是企业客户, 就必须同时返回税号这类跨字段业务规则。虽然 jason schema 规范里有条件表达机制, 但在很多大模型方程 calling 实现中,支持程度并不一致。模型对过于复杂的嵌套 schema 理解也可能下降。服务商文档通常会建议保持 schema 扁平字段少,描述清晰。还有一点,杰森 schema 约束的是参数长什么样不负责决定什么时候该调用函数 调用时机由模型判断,可能受提示词、函数描述和对话上下文影响,真正涉及资金权限、数据安全的业务逻辑 仍需在代码层做独立校验,不能把全部责任交给模型和 schema。 总结一下, jason schema 是 fengshui 背后的参数规范,它用机器可读的方式描述函数参数的类型、必填项、每举范围和嵌套结构。 它让大模型的结构化输出从一个概率问题变成一个可验证的契约问题。理解它的核心关键字和调用流程,你就能更稳地设计 ai 工具。知道哪些错误可以靠 schema 拦下,哪些必须靠后续代码补上。

jason 到底是什么?很多小白听到 jason 以为是很难的技术,其实可以先理解成一种数据格式。前端和后端沟通时不能只说一堆文字,最好按固定格式传数据。 jason 就 像一张整理好的信息表,比如一个用户信息,可以包含昵称,手机号,头像和身份。 比如一个订单信息,可以包含订单号,商品金额和状态。它最常见的形式就是自断名,对应自断值。前端请求接口以后,后端经常会把数据整理成 jason 返回前端,拿到 jason 后,再把里面的内容显示到页面上。 所以你看到的列表详情,订单状态背后,很多都是接口返回的 jason 数据。 jason 不是 数据库,也不是页面,它只是前端和后端之间传递数据的一种格式。 所以记住一句话,接口负责沟通, jason 负责装数据。下一集继续讲 get 和 post 有 什么区别?

今天跟兄弟们分享 jason 格式的提示词啊,这个有用吗?嗯,这个东西好在哪啊?有了它呢,咱们写提示词啊,嗯,就跟写填空题似的。嗯,给咱们个模板往里添就行, 要不每次自己写提示词,写出来的呢,就跟抽盲盒似的。最重要的是呢,他能学到很多文化,多巴恩活泼风。谁给我解释一下 马卡龙色系点缀?马应龙我知道,尤其啊,是做建筑装饰设计行业的,就相当于啊把提示词呢给分了,图层逻辑清清楚楚啊,好理解多了。 首先啊,找一张图丢给娜诺果,娜娜把这段提示词给他呢,提示词是这么写的,他是一位资深的室内设计师,建筑装饰领域的风格迁移专家。 任务是啊,深度分析参考图,绕过表象,抓取设计灵魂,用于后续的风格迁移。下面呢,就是拆解核心的风格与氛围材质和机理啊,光影逻辑,构图方式,相机参数的模拟,还有就是技术渲染指令。 最后呢,让他扒出一段呢,可以直接复制的标准化的 json 格式的提示词,用于迁移到新的空间。然后呢, ai 就 会给我们生成这个图片的 json 格式的提示词,每条提示词呢都是干什么用的啊,写的非常清晰。 然后我们把这个 json 文件呢,再给 ai 丢回去,让他再用自然语言描述。呃,就成了一段结构清晰的自然语言的提示词了。我们拿它生下图呢做参考图也行, 加上锁定结构的提示词,让它把白膜或者是草稿啊,生成效果图呢,也可以啊,对 ai 感兴趣的朋友可以加一下关注,咱们一起学 ai。

互联网人最容易读错的英文单词,快来看看,你中枪了吗? circle sql, python, python, jason jason。

很多人在刚开始用 ai 大 工作流,大家智能体的时候,都会遇到一个词叫 jason, 今天一条视频就让你能够读懂 jason, 并且学会使用 jason。 我 们简单来说, jason 其实就是一张单子,主要作用呢就是用于不同程序之间传递信息啊,左边呢就是自断名,右边就是自断值,跟咱们的快递单一样, 像快递单里面的这个收件人就是一个自断值。虽然 jason 长得很吓人,但其实它的作用和快递单一样朴素, 是把信息都登记清楚。我们举一个例子,比如说你问一个 agent 啊,未来几天的天气怎么样,这个 agent 呢,他去查这个天气的小程序或者 app, 然后他拿到一段 json, 他 json 呢,可能就长的是这个样子,然后呢模型再根据这个 json 登记的信息翻译成人话给你听。那这个 json 如果我们要看懂呢?一共要看懂两个元素,一个是大括号,一个是方括号。 一个大括号包裹的内容呢,就是一张单子,大括号的左边和右边分别代表一张单子的开始和结束。中间每一行呢都是一条字段名加冒号,加字段值,然后方括号呢,可以把它理解成一个夹子,这个方括号的左边和右边就是夹子的两边 啊,它既可以夹一个值里面的不同内容,也可以用于夹一摞单子。比如说像这个里面,未来三天的值就代表着三个不同的天气啊,明天晴,后天多云,再大后天是雷阵雨, 在这里呢,字段名还是一个字段名啊,值也还是一个值,只不过这个值里面包含的是三个不同的内容,所以要用分括号把它夹起来,那到现在呢,你能看懂这个描述天气的 jason 串,就代表你已经能够读懂 jason 了。我们再来说这个 jason 在 什么场景下会用到, 比如说你想在这个扣子的平台上面搭建一个帮你起爆款标题的工作流啊,你需要每次给 ai 聊了你的标题,并且把这些标题落到在线表格里。 你可以想象一下, ai 再给你十个标题和落到在线表格里十个标题,它最大的区别是什么啊?就是 ai 在 跟人说的时候,可以说一段这种非标准的自然元,但是当它想落到表格里面呢,就需要把信息整理得非常标准化,把不同字段只填到这个格子里面,所以呢,它出来的可能就是这样的样式。 我们可以看到这个 jason 的 开头不再是大括号了,而是方括号,而这个方括号呢,就是一个夹子,它夹了一摞的单子,因为我们让 ai 输出的是十个标题,所以就代表的是十个单子,我们要用这个方括号的夹子把它夹起来,然后再填到在线表格里, 这样呢,就可以实现人不再需要通过 ai 输出的一大段非标准化的文字,把它整理好填进表格里面了,而是通过工作流自动化的运行,让它自动的填到表格里。 大家要记住,给人看呢,只要输出自然元就可以,但是给程序看呢,要输出这个标准的 json, 这个也是很多教程让你在某些节点配置 json 的 原因。那除了搭建智能体和工作流,还有一个场景,就是当你拿到了一个教程和配置之后, 这个配置会说让你把一些关键的 key 或者是 id 换成你自己的这个密钥,比如说呢,你拿到一个做口播的一个智能体, 我们拿到这些配置之后呢,你需要把这些关键的值都改成更加符合你自己习惯和行为的一些值,也就是我们拿到一个写好的 json 改里面值的一个场景啊,大家在平时用这个 cc switch 里面改 token, 其实也是这样的一个场景。 那最后呢,还有两个点大家要记住一个呢,就是文字必须要保证放在双引号以内。然后还有呢就是这个大括号里面的最后一个字段值 后面是不用加逗号的。以后大家再拿到一段 jason, 都可以先看看它的第一个符号是大括号还是方括号,如果是大括号的就代表它是一个单子,然后再拆里面的信息,如果是方括号呢,就代表它是一摞单子,然后我们再可以看它里面具体包含几个单子, 不管是多长的 jason, 它都是这个大括号跟方括号层层套出来的,虽然看着很复杂很吓人。那为了大家更好的理解 jason 呢,今天你可以跟 ai 随便的聊一聊, 然后等他给你回复之后呢,再跟 ai 说,把刚才的内容用 jason 再给我整理一下发给我,然后你就可以更好地读懂 jason 和理解 jason 了。

哈喽大家,我是太阳。很多人在玩 ai 身图或者做连续性蓄势的时候,总是会遇到这样一个极其抓狂的痛点,上一秒深沉的还是个冷酷的杀手,下一秒换个动作提示词,人脸就完全变了,长剑飞到了九霄云外,特征消失了一大半。这一关呢,就引出了一个概念,它叫做一致性。 想要搞明白如何保持人物和场景的一致性,这里我们则需要明白提置词的运行逻辑。所以本期我们就来详细讲讲,在和 ai 对 话以及深图的过程中,如何利用提置词的底层逻辑,通过简单三步来强力控住人物和场景的一致性。 ok, 我 们现在开始吧。 这里关于 ai 为什么总是翻脸不认人,它其实非常好理解。在底层算法的逻辑中, ai 就 像是一个患有严重失忆症且极度发散的天才画家, 每一次你给他输入一段新的纯自然语言提示词,他都会把之前的记忆清空,去重新置头子。这里如果想要完美的把控它,我们要做的就是用结构化的原规则去给他建立一套严格的特征图谱和空间坐标系。这就好像你在筹备一部载漫画, 如果你只对主笔说画一个帅哥,他每天都会画出完全不同的脸。但如果你把这个帅哥的面部骨相特征穿到材质属性,甚至他所在场景的物理光源全部写进一本严谨且格式统一的设定集里, 那么不管他在干什么,画风都绝对不会跑偏。在提示词的系统中,想要构建这一种一致性的底层逻辑,我们可以分为三步进行。首先,第一步是核心特征的结构。这里我们必须抛弃人类的文学性思维,不要给 ai 注入气质高冷、眼神迷离这种模糊的形容词。 ai 的 神经网络无法精准解析这些抽象的文学概念,我们需要把人物降为成最直观的视觉元素, 也就是赋予它防伪的标签。比如特定的发型与发色、特殊的面部骨骼点、固定的穿搭材质,这些特征拆解的越颗粒化,这个人物的 dna 在 底层算力中就越稳固。 而梳理了人物的核心特征之后,下面我们就可以进行第二步,场景坐标的网格化定义。很多时候人物没变,但背景完全塌方了,是因为我们没有给 ai 提供空间锚点控制场景一致性,本质上就是用文字搭建一个虚拟的三维坐标系。 除了描述空间本身,你必须定死三个核心要素,光源方向、摄影机视角以及核心参照物。比如从左侧百叶窗透进来的高对比度测逆光、广角、低基位仰拍。 这种明确的基位和光源要求呢,可以最大程度的将 ai 限制住,这样它就失去了擅自重构房间布局的自由度。而当前两步做好之后,最后我们再来进行第三步,它也是控制核心特征和场景坐标的强力容器。 分层格式约束用大白话来说,自然语言的提示词就类似于去和 ai 商量。而结构化的提示词呢,则是给 ai 下命令。 我们在写一长串自然语言提示词时, ai 经常会发生特征污染。比如你写了红色的苹果,绿色的沙发,它一时犯迷糊,注意力机制发生偏移,可能就给你画了个红色的沙发,绿色的苹果。这个其实非常好理解,因为人类的自然语言是网状且发散的。 这个时候我们就需要引入程序员常用的 json 数据格式来重构体式词,它就像是给 ai 定了一张有严格规范的填空表格,而不是一句随意的描述。 在 json 格式下,我们会用大括号和箭指队把信息严格规范,比如写成下面这种格式。这样在底层解析时呢,大圆模型面对这种极致结构化的数据,它的注意力机制就会被极大地加强,进而不会再去把前后的形容词胡乱的粘连, 而是严格按照键和值的对应关系去提取视觉要素,进而大幅降低语义歧义。你可以把你的环境、人物设定全部封装在 jason 的 敞亮框架里,仅仅把人物的动作和表情作为变量进行数值替换,这就从根本上切断了 ai 自由散漫、胡乱联想的退路。 这里呢,我也为大家总结了一些通用的中文 jason 格式的提日期模板,大家可以根据自己的需求去修改其中的各处特征数据。虽然目前在提高一致性的道路上还衍生出了很多其他的方法, 比如加入角色设定图和场景设定图,或者直接在后期修改局部的特征。不过在初始创建这些设定图的时候,我们还是需要从零开始去写提日期的。 而 jason 的 格式则可以大幅增加我们得到想要的角色和场景设定图的概率。在做一些长篇漫改系列故事版或者品牌视觉的时候呢,掌握这些规则可以帮助我们彻底摆脱抽卡的随机焦虑,让你用最纯粹的技术逻辑和数据结构,真正的把 ai 从一个随机抽卡器宣化成为绝对服从的精准画笔。 ok, 以上就是本期视频的全部内容了,如果有帮到你的话,可以三点加关注支持一下,你的支持就是我更新的最大动力,大家有任何问题也可以随时私信我,我们下期再见!

用 ai 来抄别人的爆款带货视频到底应该怎么做?今天带大家把这套流程好好的梳理一遍。首先我们先找到我们要对标的爆款视频,这个视频的时长呢,一般在十五到二十秒左右,这个是最好对标的。我们把这个视频发给 jimmy, 给他一句提示词,按照 jason 的 格式, 我生成这个视频的视频提示词,我们就会得到一段这样的提示词,你们可以看到他基本上从各个方面都做了一个相应的对标,而且这次的提示词呢,他会更加的精确一下。一步我们把这个提示词继续发给 jimmy, 把我们自己的产品也发给他。比如说我们之前的这个模仿的对标视频,他是一个灰色的裤子,然后我们自己的产品是棕色的, 我们把自己的产品和之前的那个这样的提示词发给 jimmy 之后,再给大家加一句话,按照我的产品去修改这个提示词,我们就会得到属于我们自己产品的这个爆款的对标提示词。最后一步,我们把这个爆款的提示词直接给到 c n 十二,然后再配上我们自己的产品图,这样的话一段特别流利,而且对标的爆款视频就出来了,大家可以赶快去试一下。

jason 是 什么?他其实是程序之间最常用的传话格式。今天这篇内容,我会用最直白的方式讲清楚 jason 到底长什么样,为什么几乎所有程序都在用它?以及程序之间用 jason 传话时,背后到底发生了什么? 我们先从一个非常现实的问题开始,如果你写过两个不同的软件,想让他们互相传递一段信息,你马上就会遇到麻烦。因为不同的程序可能是用完全不同的编程语言写的, 内存里的数据结构也完全不同。比如一个 python 程序里可能是个字典,到了 java 那 边就成了一个 map 对 象,它们根本不能直接把内存里的东西扔给对方。所以程序间通信,必须先把数据变成一种大家都能看懂能处理的中间格式。 json 就是 最受欢迎的那一个。 jason 的 全称是 javascript object notation, 翻译过来叫 javascript 对 象表示法。虽然名字里带着 javascript, 但这玩意早就跟 javascript 没什么绑定关系了,几乎任何语言都可以深层和解析它。它本质上就是一种纯文本, 用非常简单的规则来记录结构化数据。那 jason 究竟长什么样?你可以把它理解成两种东西的组合,一种是建职队, 另一种是有序列表键值队就是用一个名字来对应一个值,比如 name 对 应小名。 在 json 里,键必须用双引号包起来,后面跟一个冒号,然后是值。如果是多个键值队就用逗号隔开,最外层用大括号包起来,这就成了一个对象。举个例子,小名 age, 二十五 city 北京就这么简单。 它完全由文本构成,没有任何二进制内容,甚至你直接用记事本打开都能看懂。这一点非常重要,因为它意味着 jason 天生就是人类可读的,而且不依赖任何特定平台。除了对象, jason 还支持数组。 数组就是一排有序的值,用中括号包起来,值之间用逗号分割。比如一个学生列表可以写成小明、小红、小刚,而且对象和数组可以任意嵌套。比如每个学生还有详细信息,就可以写成 name, 小 明 score 九十, name, 小 红 score 八十五。这种嵌套能力让 jason 足够灵活,几乎能表达任何结构化的信息, 从简单的配置到复杂的接口返回数据,它都能扛得住。值本身也有类型限制, jason 只能用六种基本类型字母串,数字不二值 now 对 象和数组。注意,字母串必须用双引号,数字不能是八禁制或十六禁制, 也没有日期类型。如果你要传日期,通常就约定成字母串格式。这些限制看似简陋,但恰恰是 jason 成功的关键。它足够简单,不同语言之间几乎不会有解析歧义。 那为什么是 jason? 以前更主流的格式是 xml, 它也是文本,但长得很啰嗦。同样的数据,用 xml 写出来,标签比实际内容还多。不光文件大, 解析起来也慢。 jason 去掉了所有多余的标签,只保留数据结构本身极简清亮,无论在网络传输还是解析性能上都明显胜出。 所以 restful api 几乎清一色用 json 作为数据交换格式。明白了 json 是 什么,我们回到程序之间怎么传话这个问题。整个过程其实就是两步,发话的一方把内存里的对象翻译成 json 字符串, 这叫序列化,渐数化的一方,再把接收符号串翻译成自己语言里能操作的对象,这叫反序列化。比如你手机上的天气应用,想从服务器获取今天天气,服务器那边可能是用 go 语言写的。它先按照 api 约定构造一个结构体, 里面存着温度、湿度、天气状况这些数据。然后程序调用一个接收库,把这个结构体序列化成一段接收文本,大概长这样, temperature 二十八 humidity 六十五 condition 情,服务器把这个文本通过网络 http 协议原原本本的发到你的手机上。手机客户端可能是用 cctv 写的,安卓应用,它收到这个字母串后, 再调用 jason 解析库,把这些信息反序列化成一个 cctv 的 数据类对象,最后把温度、天气图标显示在界面上。 这整个过程里,客户端和服务器都不用关心对方用的是什么语言,什么数据结构,因为接缝成了他们之间的唯一约定,只要双方对字段、名字段类型达成一致,传话就不会出错。这种约定就是我们常说的 api 接口文档, 它规定了 json 里要有哪些键值,是什么类型,哪些是可选的。 json 的 应用远远不止网络请求。在很多软件里,配置文件也开始用 json 来写,因为它结构清晰,读起来比传统的 i n i 文件或一些自定义格式更友好,甚至数据库都开始原生支持 json 类型。 你可以直接把一个接收对象存进数据库的一个字段里,还能用 circle 查询它内部某个具体的字段。不过接收也不是万能的,它不支持注试。如果你想在配置里写说明,就只能靠字段名自解释。而且对于非常大的数据流, 纯文本格式的解析效率可能不如一些二进置方案,比如 protocol buffers。 嗯,但即便如此,接收仍然在绝大多数通用场景里占据绝对主导, 因为他的可读性和简单性的优势实在太大了。最后,我们可以这样总结, jason 是 一种用纯文本记录结构化数据的轻量级格式,他靠极简的建制队和列表规则,让不同程序之间能够无障碍的传化。 他的核心机制就是序列化和反序列化,把内存对象变成字幕串,再从字幕串还原成对象。理解了 jason, 你 也就掌握了现代软件开发中最基础、最常见的沟通协议。

是节省,节省其实是一个后端返给前端数据的一种,你把理解成再提,后端返给前端的一种再提, 那对于这种节省的形式来说,它会有,它其实是通过一个大括号包起来,它里面有个 k 和 y。 比如说我现在用户登录,那用户登录,那我现在提交了用户名密码,点击登录,这一瞬间的时候是前端和后端进行交互, 那交互的时候接收应该是什么样子?接收,比如说 user name 等于张三,那个 password 等于李四,把 password 等于一二三四五六,那之后这个形式大括号包起来,这个就是接收点击提交到后端,刚才刚才聊的通过 api 的 形式 把接收数据给到后端,那后端他接收到之后,他觉得用户名和密码都是正确的,他就觉得后端经过一系列流程之后,他就返给前端说, ok, 好, 你这个用户名密码正确,可以登录,那得前端得到一个响应值两百,就可以进行正常的登录了。 那这个就是一个大概接收的一个在整个流里面的一个作用。什么是接收?接收其实是一个后端返给前端数据的一种, 你把理解成再题,把后端返给前端的一种,再题,那对于这种节省的形式来说,它会有,它就其实通过一个大括号包起来,它里面有个 k 和 value。 比如说我现在用户登录那,那用户登录那我现在提 交了用户名密码,点击登录,这一瞬间的时候是前端和后端进行交互,那交互的时候节省应该是什么样子?节省,比如说 user name 等于张三,那个 pass word 等于李四,把 pass word 等于一二三四五六,那之后这个形式大括号包起来,这个就是个接收点击提交到后端,刚才刚才聊的通过 api 的 形式 把接收数据给到后端,那后端他接收到之后,他觉得用户名和密码都是正确的,他就觉得后端经过一系列流程之后,他就返给前台说, ok, 好, 你这个用户名密码正确可以登录, 那都前端得到一个响应值两百,就可以进行正常的登录了,那这个就是一个大概节省的一个在整个流里面的一个作用。

son, 全称 javascript object notation, 它是美国程序员道格拉斯克罗克福特基于 xmas script 的 一个子集, 也就是 javascript 的 对象表示法所设计出来的一种轻量级数据交换格式。尽管起源于 javascript, 但道格拉斯克罗克福特从一开始就强调 stinson 的 独立性,大部分的编程语言也都支持 stinson。 它不是一种编程语言,而是一个纯文本用来交换数据的格式。 在学习 stinson 前,我们得先认识三个关键的概念,对象, object 键、 p 值、 value。 stinson 文件就像一张你的个人信息卡,键是名字、年龄这些问题 时是你所填的信息,而你的个人信息卡就是一个完整的对象,代表的就是你特别类似于编程语言中的变量。 而 zsen 作为一种文本,它靠的是符号来规划结构并区别内容的,而所用的符号必须是英文符号,不要为了贪图一时的方便而导致格式不对。写 zsen 时,得先用花括号和方括号包裹你所写的内容,也就是框架, 但这要看你的 sim 文件是用在哪个地方。花括号是对象容器,方括号是簇组容器。花括号表示一个对象和实体有明确的键值。对结构,方括号表示一个列表和集合,通常是同类项的集合。 你可以这么理解,方括号的簇是人类这个种族,而花括号的对象是当中的一个人。比如我的世界的 text 文件夹里面的 languages, justin 语言文件就是方括号。现在我们开始正式的编辑空格和换行其实是不必要的, 仅仅是为了方便阅读而已。在 justin 的 标准格式中,键和值所处的位置是固定的,目前的 justin 解析器也是这样,键在左边,直在右边,中间用冒号分隔键是必须用双引号把它包裹起来的,且标准格式中是不能注视的, 但部分的 justin 解析器提供该功能。这就是一个简单的 justin 对 象了,只有六种类型。这个被双引号包裹起来的就是字母串, 字母串可以写任何东西,可以是中文、英文、数字等,甚至是一个完整的 justin 对 象。但这得看键所要求的值是不是就是这么写。就像考试的时候,题目要求你填补缺少的诗段, 然后你灵机一动,填了个数学公式下去,假设键是 name 名称,这种文本类型的键基本上可以随便写,但直接输入你好也想把双引号输出出来, 这种做法是会报错的。这是因为在字母串里面,双引号是结束和开始的意思。输入多个双引号,解析器无法知道哪个是开始,哪个是结束。这里就要提到一个重要的概念了,转移 转译可以让解析器理解某些字体应按字面意义处理,也可以用可见字体表示,不可见控制命令。这里我直接用 python 和 termox 终端来演示。 可以看到输出了双引号之内的内容,现在在其中添加双引号, 不出意外的报错了,这个时候就需要转异了。而反斜杠就是转异的核心符号,在双引号的前面加上反斜杠,就可以把它输出出来了。 要输出反斜杠本身,那就在反斜杠前面再加上一个反斜杠。这里因为要转异双引号,所以我输入了两个,你如果只输入一个反斜杠的反斜杠给转异了。 转译后的反斜杠是文本意思,无法转译双引号,所以要再加一个反斜杠,把反斜杠转译成文本,避免影响转译双引号用的反斜杠。然后转译用的反斜杠是不会输出出来的,因此只输出了一个反斜杠。 如果想在文本中表达换行,就输入反斜杠加 a, 它可以把后面的内容输出在下一行。 反斜杠加 t 等于制表符,相当于你按了一下键盘上的 tab 键来对齐。一个 t 等于两个空格,而且可以叠加两个 t 等于四个空格。 反斜杠加 f 等于换页符,相当于把输出的内容移动到下一页或下一行的开头。在现代终端中,它通常不产生实际的分页效果。 在打印机输出或特定格式文本文件中,它能实现换页操作。反斜杠加 b 等于退格符,相当于键盘上的 backspace 按键。将当前位置向左移动一格。反斜杠加二等于回车符,它会将当前光标位置移动到本行的开头 二,之后的内容会覆盖掉同一行之前的内容,不执行换行功能。反斜杠加斜杠,把斜杠翻译成文本意思。虽然直接写斜杠通常也是安全的,但翻译可以防止在 html 环境中解析错误。 许多编程语言,如 java script, php 中的正则表达式通常有一对正斜杠包裹,例如 pattern。 如果你需要匹配文本中的斜杠, 那就必须对其进行转译,否则系统会误认为正则表达式已经结束。反斜杠加又等于 unico 的 四位十六禁止编码。 该转译允许 unico 的 四位十六禁止编码表达对应的 unico 的 字符。在原代码储存格式非 f 八的环境下, 用 u 显示编码中文,可避免代码再次打开时出现乱码。而且无论文件编码如何设置,特定的文字符号都能被正确识别和渲染。以上所讲的九个转移方法都是甚所支持的,实际上还有别的转移。好了, 继续编写 if, 如果要写多个键值对,那就用逗号分开,如果后面没有了内容,就不写留空。该值是数字类型,支持正数、负数、小数。科学技术法。我输入的一二三一六换算是二零零六,通常用于定义伤害多少, 金币多少这类参数。该值是不尔值,能写出是真 boss 是 假,个人感觉类似于 yes 和 no。 该值是 no。 空值表示没有何无 嵌套对象,有些键有多个键值对和对象,如这样, 该值是数组类型,可以填任意的多个相同类型的值。字母串就字母串了,别字母串还加数字,当然也可以在里面嵌套多个对象。 这里我再说一遍,如果后面已经没有内容了,那就不用写逗号了。 注意事项,在同一层结构中不能出现相同的键,解析器会覆盖重复键的值,只保留最后一个出现的键值。对,还有 justin 中的键来源不是 justin 本身, justin 只是数据交换格式, 是数据的生产者根据需要自定义。在编辑 api 或配置文件时,开发者根据业务逻辑命名键。例如为了记录姓名,开发者会定义一个键为 name 名称。

大家好,欢迎来到第十七课的学习。在前几节课中,我们开发的网页交互数据都有一个致命问题,只要刷新页面,关闭浏览器,所有新增的数据都会直接消失。比如我们后续要做的代办清单,每次重启页面都要重新输入内容,体验非常差。 今天这节课我们就彻底解决这个问题,学习浏览器本地存储技术,让网页数据可以长期保存。同时我们会掌握前端开发必备的 json 数据格式,这是对接本地存储网络接口的核心基础。本节课内容实操性极强,学完就能实现网页数据永久留存,为我们后续的实战项目打下关键基础。 首先,我们要分清前端最核心的两种数据存储形式,内存数据和对象定义的数据全部都属于内存数据。 这类数据的特点是页面运行期间可以正常使用、修改、读取,但它完全依赖浏览器的运行内存。一旦我们刷新页面,关闭标签页、重启,浏览器内存就会清空,所有数据都会彻底丢失,无法恢复。 而我们今天要学习的持久化数据,是直接存储在用户电脑、手机的本地磁盘上的,它不依赖页面运行状态,哪怕关闭浏览器、重启设备,数据依然会保留,直到我们主动删除或者手动清理浏览器缓存。 简单来说,内存数据是临时草稿,持久化数据是保存后的文件,在实际开发中临时交互数据用内存存储,用户设置列表数据偏好配置,这类需要留存的内容必须用本地持久化存储。 想要用好本地存储,我们必须先掌握 jason 格式。 jason 全称是 javascript 对 象表示法,它是一种轻量级、跨语言的结构化数据格式,也是目前互联网数据传输、本地存储的通用标准。不管是前端本地存数据,还是前后端接口对接、 ai 服务、数据交互,全部都依赖 jason 格式。 很多初学者会混淆 jason 对 象和 jason, 这里大家一定要区分清楚。 jason 对 象是浏览器专属的程序,数据只能在 jason 代码中使用, 而 j c n 是 纯文本格式,所有编程语言、所有设备都能识别解析。 j c n 的 语法非常严格,键名必须用双引号包裹字体串值也必须是双引号, 不支持注视,不支持 undefined function。 这类 j c 专属数据格式高度统一规范。它主要分为两种结构,大括号包裹的对象结构用来存储单条结构化数据。中括号包裹的数组结构用来存储多条数据列表。 这里有一个关键知识点,也是新手最容易踩坑的地方。浏览器的 local storage 本地存储只能存储纯字串数据,无法直接存储数组对象这类结构化数据。如果我们直接把 js 对 象存入本地存储数据,会丢失结构,变成无效的字串,无法正常读取使用。 所以我们需要两个核心方法完成数据转换,也就是序列化和反序列化。序列化使用 json 点 stringify, 可以 把 json 纯字串让本地存储,可以正常保存。 反序列化使用 jason 点 plus 括号作用刚好相反。把本地存储读取出来的 jason 字符串重新转换成 jason 对 象数组,让程序可以正常读取。修改运算,简单总结,存数据先序列化,读数据先反序列化,这是本地结构化数据存储的固定流程。 接下来我们正式认识 local storage, 它是 html 五官方推出的本地持久化存储方案,也是前端小型项目最常用的存储工具。首先是它最核心的持久化特性,默认没有过期时间,只要不主动执行删除代码,不手动清空浏览器缓存,不清理网站数据,数据会一直保存在设备中,永久生效。 其次是容量规范,主流浏览器统一为五兆,足够支撑我们的个人项目、小型网页的所有本地数据存储需求。同时它有严格的同源策略保护, a 网站存储的数据, b 网站绝对无法读取和篡改,保障了基础的数据安全。 最重要的一点, local storage 是 纯客户端技术,所有数据都存在用户本地设备,不需要服务器参与,不占用后端资源,没有网络请求消耗,响应速度极快,这也是它适合存储用户本地配置个人列表数据的核心原因。 local story 的 操作非常简单,只有四个核心 api, 零基础也能快速上手,全部是键值对的操作模式。 第一个 set item 是 写入和修改数据的方法,接收两个参数,第一个是自定义的键名,用来唯一标识数据。第二个是要存储的字幕串数据, 如果键名不存在,就是新增数据,如果键名已存在,就会覆盖原有数据,实现修改更新。第二个 get item 用来获取数据,只需要传入对应的键名,就能获取对应的存储内容,获取不到数据时会返回 null。 第三个 remove item, 精准删除单条数据,传入键名即可,不会影响其他存储内容。第四个 clear 是 清空方法,会一次性删除当前网站所有的 local storage 数据,一般用于重置页面数据的场景,使用时需要谨慎。 这四个方法组合起来就能完成本地数据的增查、改删。全流程操作。我们先从最简单的基础数据存储开始实操,对于字母串数字这类简单数据不需要转换,可以直接使用 set item 存储。比如我们存储用户名、页面主题、默认参数这类简单内容,直接写入键名和对应值即可。 需要注意的是,数字存储后会自动转为字母串格式,读取后如需运算,需要手动转换数据类型。 存储完成后,我们可以通过浏览器开发者工具验证数据。打开 f 十二,找到 application 面板,在 local storage 栏目下就能看到当前网站所有的存储数据,包含键名值、存储时间,方便我们调试排查。 如果我们用相同键名再次写入新数据,原有数据会直接被覆盖,这就是我们更新本地数据的核心方式,操作简单且高效。 这是本节课的重点实操内容,也是我们后续代办清单项目的核心功能。我们需要存储多条代办数据,每条数据包含内容、完成状态、创建时间。这种结构化数据必须通过 jason 转换才能存储。 首先我们定义 js 序组或对象,然后用 jason 点 synefinify 括号。序列化转为 jason 字母串后,通过 set item 存入本地。当页面刷新需要重新渲染数据时,我们先用 get item 读取存储的字串,再通过 jason parse 括号反序列哈还原成原本的序组对象结构之后,就可以正常便利修改序列数据。 如果我们新增、删除、修改了代办数据,只需要将更新后的序列化覆盖存储,就能实现数据实时同步,保证刷新页面后数据不丢失。 这整套流程就是前端本地结构化数据存储的标准写法。在实操过程中,大家大概率会遇到几类常见报错,我给大家统一梳理解决方案。 第一类是 jason 解析报错大概率是存储的字幕串格式不规范,或者读取到了空数据无效数据。解决方法是读取数据时先做判断数据存在再解析,同时保证序略化与法规范。 第二类是读取数据为 null, 基本是三个原因,键明书写错误数据没有执行存储代码,浏览器缓存被清空。第三类最常见页面修改数据后刷新发现数据没变,这是因为大家只修改了内存中的数据,没有重新执行 set item 覆盖本地存储数据。 最后要注意浏览器隐私,无痕模式下部分浏览器会限制 logon 使用,同时单网站五兆容量超限后无法继续写入新数据,开发中需要做好容错处理。 最后,我们重点强调本地存储的安全规范,这是新手极易忽略但直观重要的知识点。 local storage 存储的所有数据都是公开透明的,用户可以通过浏览器开发者工具随意查看、修改、删除,没有任何加密和权限保护,安全性极低。 所以我们绝对不能将密码、用户密钥、手机号、身份证、支付信息登录、 token 等敏感数据存入 local storage, 所有隐私敏感、需要权限保护的数据必须存储在后端服务器数据库中。 logo storage 只适合存储非敏感的普通数据,比如代办列表、页面主题、字体大小、本地操作记录等。大家一定要严格区分存储场景,避免出现安全漏洞。我们来简单总结本节课的核心内容。首先,分清了内存临时数据和本地持久化数据的区别,解决了网页刷新、数据丢失的核心问题。 其次,掌握了 jason 通用数据格式,理解了 jason 对 象与 jason 的 差异。最后,熟练掌握 local storage 的 增删改查操作以及结构化数据的存储转换流程,同时明确了本地存储的安全禁忌。 本节课的所有知识点都会直接应用到我们后续的代办清单实战项目中,实现代办事项的本地永久保存。大家课后一定要独立实操一遍完整流程,熟练掌握数据转换和本地存储的固定写法,为后续网络请求项目上线做好铺垫。