标签: json

  • 关于json:在线JSON转HTML工具

    在线JSON转HTML工具

    在线JSON转HTML工具

    JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格局。它基于 ECMAScript (欧洲计算机协会制订的js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。

    HTML的全称为超文本标记语言,是一种标记语言。它包含一系列标签.通过这些标签能够将网络上的文档格局对立,使扩散的Internet资源连贯为一个逻辑整体

    https://tooltt.com/json2html/

  • 关于json:在线JSON格式化美化

    在线JSON格式化丑化

    在线JSON格式化丑化

    JSON是由道格拉斯·克罗克福特构想和设计的一种轻量级材料替换格局。其内容由属性和值所组成,因而也有易于浏览和解决的劣势。

    本工具能够在浏览器本地格式化丑化JSON,反对上传下载

    https://toolgg.com/jsonedit/

  • 关于json:为什么JSON将逐渐取代XML

    @TOC

    大家好! 我是来自深圳技术大学FSR实验室的同学,题目FFH就是FSRlab For Harmony!并且我也正在加入OpenHarmony成长打算从论文到开源提交钻研,当前咱们也会陆续在这个社区记录学习心得和领会。

    引言

    ​ 置信大家不论是在鸿蒙利用开发,web开发或者小程序开发,都会用JSON或者XML进行数据的传输,大家对这两个技术的应用并不生疏,然而咱们往往只是局限在应用上,所以在论述为什么XML会被JSON取代之前,我想先把这两个货色的起源和由来都给大家简略的科普一遍。

    XML

    标记型语言

    ​ 讲XML之前,咱们先来理解一下标记型语言,我就用艰深地语言形容一下,比方我当初要写一篇博客通知你们为什么XML会被JSON取代,那这篇博客外面会有题目,二级题目,代码段,高亮文本等等,这些最终都会显示在网站上。

    ​ 那么问题来了,浏览器怎么晓得我显示地文字是题目还是高亮文本…

    ​ 于是就有了Markdown这门标记语言,它就是用各种标记符号阐明了哪里是题目,哪里是高亮文本。说白了,标记语言就是为了让繁杂的数据结构化,应用标记语言后,能让计算机和人能清晰分别各类数据,如下例子,用#来标记一级题目,“内能够放高亮文本。比方网页能依照题目,段落,图片出现,都得归功于标记型语言HTML。

    # 题目
    `高亮文本`

    XML起源

    ​ 最早在1969年,IBM开发了第一种文档描述语言,用来解决不同零碎中文档格局不同的问题,把这种标记语言称为通用标记语言(Generalized Markup Language)GML,前面这门语言也被不断改进

    GML(1969)————>SGML(1986 国际标准化组织驳回)————>SGML(2018改良并欠缺)

    ​ SGML具备相当高的规范性和可扩展性,然而就是因为标准多,导致开发,学习,保护的老本就很高。
     到了1989年欧洲粒子物理实验室的研究员在SGML的根底上,提出了HTML,一种超文本的标记语言,简略,通用,语法要求宽松(能够嵌套应用)。

    ​ 而后随着Web得倒退,传输过程中负载的数据量越来越大,如果没有结构化数据的话,解决传输的数据耗费会十分十分大,而且十分麻烦,而HTML重点是对于数据的显示,不关怀所形容的数据结构,不足对文档数据含意的确切形容,不能满足对各类信息的存储,传递和搜寻的需要,基于以上需要,又一次在SGML的根底之上,简化出一种标准,1996年,提出了另一种标记型语言命名为XML(可扩大标记语言),就这样,XML呈现了。

    例子

    比方A公司要获取到B公司名字叫Hagon的员工个人信息,这时B公司承受到A公司的申请后,就给A公司传输发送了如下XML格局数据:

    <title>员工信息</title>
        <person id="666">
            <name>Hagon</name>
            <age>66<age>
            <sex>男</sex>
            <job>头铁前端工程师</job>
        </person>

    因为构造清晰,A公司拿到数据后很不便地进行了解决。

    XML的瓶颈

    ​ 尽管XML规范自身简略,但与XML相干的规范却品种繁多,W3C制订的相干规范就有二十多个,采纳XML制订的重要的电子商务规范就有十多个。

    ​ 随着AJax(之前叫XMLHTTP,2005年后才叫Ajax)技术的风行,XML的弊病也越来越浮现:大家都晓得XML实现是基于DOM树实现的,而DOM在各种浏览器中的实现细节不尽相同,所以XML的跨浏览器兼容性并不好,所以急需一种新的数据负载格局集成到HTML页面中以满足Ajax的要求。

    ​ 这就到了咱们要讲的JSON。

    JSON

    JSON的诞生

    ​ 后面咱们说了随着Ajax的风行,而各种浏览器对DOM的实现细节不尽相同,所以会呈现兼容性问题,这对前端开发同学来讲真的是劫难。因为一个性能可能须要用代码去兼容各种不同的浏览器,还要调试,工作量微小。

    ​ 然而问题总有方法能解决,那就利用所有支流浏览器中的一种通用组件——JavaScript引擎。这样只有发明一种JavaScript引擎能辨认的数据格式就能够啦!

    ​ 而后就诞生了JavaScript Object Notation (JSON),它是一种轻量级的、基于文本的、独立于语言的数据交换格局,它源于ECMAScript编程语言规范。

    实例

    也是上一个员工信息的例子,用JSON就能够示意为:

    {
        "title":"员工信息",
        "id":666,
        "name":"Hagon",
        "age":"66",
        "sex":"男",
        "job":"头铁前端工程师"
    }

    第一点能够看到,能够看到没有像XML一样有太多嵌套的标签,都是以相似键值对的模式示意,构造简略。

    第二点,在编写XML时,第一行须要定义XML的版本,而JSON不存在版本问题,格局永远不变。

    XML与JSON的数据比照

    说了那么多纸上的文言,接下来用数据谈话。

    场景介绍

    ​ 场景由一系列较小的试验组成,这些试验依据咱们的每一项指标来确定JSON和XML在统计上是否不同。采纳均值比拟耗费工夫测验。咱们将20000、40000、60000、80000和100000个编码对象发送到服务器,并收集每种状况的指标。表3、4和5显示了从这些试验中取得的指标。

    工夫耗费

    从这张表格上,不难看出XML解决雷同数据的工夫耗费大概是JSON的30倍

    CPU及内存利用率

    ​ 图4和图5别离是JSON和XML的CPU和内存利用率数据显示,从左到右顺次是用户CPU利用率的均匀百分比,零碎CPU利用率的均匀百分比内存利用率的均匀百分比

    ​ Figure3显示了JSON每次试验的均匀CPU和内存利用率。图4展现了XML每次试验的均匀CPU和内存利用率。Figure5通过在同一个图上绘制Figure3和Figure4(不便比照),阐明了JSON的资源利用率和XML的资源利用率之间的差别。上图数据表明,XML应用的用户CPU利用率整体上显著低于JSON。JSON和XML编码的传输在服务器上应用的内存量简直雷同(图中外表XML内存利用率的浅蓝色折线被重叠遮住了)。

    总结

    ​ 在下面的试验数据能够看到,JSON的性能显著强于XML。

    ​ XML与JSON在web一直倒退且传输数据量日益增大的背景下, 在要求算力的时代下,JSON毫无疑问会是更加优良的一方。并且当初也又很多JSON的解析器,比方Gson,FastJson,Jackson等,这些解析器也在一直助力JSON的倒退。

    参考文献:

    Comparison of JSON and XML data interchange formats: A case study

    The application/json Media Type for JavaScript Object Notation (JSON) – 百度学术 (baidu.com)

    JSON 是如何诞生与倒退的?_CSDN资讯-CSDN博客_json起源

  • 关于json:在线XML转JSON工具

    在线XML转JSON工具

    在线XML转JSON工具

    XML:可扩大标记语言,规范通用标记语言的子集,简称XML。是一种用于标记电子文件使其具备结构性的标记语言 。

    JSON:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格局

    https://tooltt.com/xml2json/

  • 关于json:表单数据高级搜索功能设计

    背景

    “搜寻”是咱们在日常上网中使用率十分高的性能,搜寻的目标是疾速检索到指标数据,用户输出指标数据的肯定特色作为搜寻条件,进行搜寻之后就能失去合乎相应特色的数据。输出的特色越多越具体,失去的后果也就会越准确。

    不过为了应用的便利性,个别默认的搜寻都不会让用户配置太多的条件,所以咱们日常接触的搜寻都是简化版本的搜寻。然而当数据量增大起来之后,为了精确失去指标数据,往往须要配置更多的条件并且调整各个条件之间的关系,这种状况下咱们就会发现固定条件和关系的简略搜寻曾经无奈满足需要了,这时候咱们就须要更加残缺的搜寻性能——即“高级搜寻”。

    设计思路

    首先讲一下设计思路,如上图咱们能够发现搜寻语句由多个条件组成,每个条件又由字段、比拟符、值组成。那用户只须要依据需要配置每个条件就能够了。这其中有几个须要思考到的细节:

    1. 搜寻的条件值类型其实并不对立:例如数字和字符串的比拟符就应该不同;
    2. 各个条件之间的关系,是须要全副满足还是满足任意一个;

    依据这个思路实现的性能界面如下图:

    实现技术详解

    接下来咱们讲讲如何实现,先来看看生成的筛选条件的类型定义:

    type Condition = {
    key: string; // 限定字段的key
    op: string; // 操作符
    value: FormValue; // value的类型就是表单组件输入的值的类型
    }
    
    type FilterTag = 'should' | 'must';
    
    type FilterConfig = {
      condition: Condition[];
      tag: FilterTag;
    }

    这里的含意是:

    1. 每一个条件对应一个 Condition
    2. FilterTag 代表每个条件之间的关系,should 代表任意一个条件满足时就通过筛选,must 代表满足所有条件时能力通过筛选;
    3. 最终的输入是 FilterConfig;

    条件配置的实现

    为了失去这个 FilterConfig,咱们须要做五步工作:

    1. 新建一项空白的条件:

    \7.png)

    2. 抉择用作搜寻条件的表单字段

    第一个下拉抉择框是抉择你想要用作搜寻条件的表单字段,关上下拉框如图所示;

    • 下拉框抉择的选项 = 表单自有字段 + 零碎字段:

    \3.png)

    • 表单字段:

    \4.png)

    3. 抉择操作符

    因为不同表单字段的值类型并不一定雷同,所有操作符要依据所选表单字段的类型展现相应的操作符汇合。

    目前低代码平台的表单值类型有:String、Boolean、Number、LabelValue、Datetime、Array<String|Boolean|Number|LabelValue>。依据这几种类型须要提前定义好相应的操作符汇合。

    const OPERATORS_STRING = [
      {
        label: '等于',
        value: 'eq',
      },
      {
        label: '含糊',
        value: 'like',
      },
    ];
    
    const OPERATORS_NUMBER = [
      {
        label: '等于',
        value: 'eq',
      },
      {
        label: '大于',
        value: 'gt',
      },
      {
        label: '小于',
        value: 'lt',
      },
      {
        label: '大于等于',
        value: 'gte',
      },
      {
        label: '小于等于',
        value: 'lte',
      },
      {
        label: '不等于',
        value: 'ne',
      },
    ];
    
    const OPERATORS_DATE = [
      {
        label: '范畴',
        value: 'range',
      },
    ];
    
    const OPERATORS_BOOL = [
      {
        label: '等于',
        value: 'eq',
      },
      {
        label: '不等于',
        value: 'ne',
      },
    ];
    
    const OPERATORS_ARRAY_MULTIPLE = [
      {
        label: '同时蕴含',
        value: 'fullSubset',
      },
      {
        label: '蕴含任一一个',
        value: 'intersection',
      },
    ];
    
    const OPERATORS_LABEL_VALUE = [
      {
        label: '等于',
        value: 'eq',
      },
      {
        label: '不等于',
        value: 'ne',
      },
    ];

    在 render 的时候用此工具函数就能够失去须要的汇合:

    function getOperators(type: string) {
      switch (type) {
      case 'array':
        return OPERATORS_ARRAY_MULTIPLE;
      case 'number':
        return OPERATORS_NUMBER;
      case 'datetime':
        return OPERATORS_DATE;
      case 'boolean':
        return OPERATORS_BOOL;
      case 'label-value':
        return OPERATORS_LABEL_VALUE;
      default:
        return OPERATORS_STRING;
      }
    }

    4. 填写搜寻条件字段的值

    搜寻条件字段的值是须要合乎该字段的类型要求以及条件限度的。如:抉择字段的组件类型为 NumberPicker,且该字段限度数字范畴为 0-100, 那么就应该展现一个数字输入框且只能输出 0-100 范畴内的数字。

    \8.png)

    条件值输入框的实现代码如下:

    function FieldSwitch(type) {
      switch (type) {
      case 'CheckboxGroup':
      case 'Select':
      case 'RadioGroup':
      case 'MultipleSelect':
        return (
          <SelectField />
        );
      case 'NumberPicker':
        return (
          <InputNumber />
        );
      case 'DatePicker':
        return (
          <DatePicker.RangePicker />
        );
      case 'CascadeSelector':
        return (
          <CascadeSelector />
        );
      case 'OrganizationPicker':
        return (
          <OrganizationPicker />
        );
      case 'UserPicker':
        return (
          <UserPicker />
        );
      default:
        return <Input />;
      }
    }

    5. 抉择各个条件之间的关系

    最初一步就是抉择各个条件之间的关系了。

    \9.png)

    • 所有:各个条件之间的关系为和(&),同时满足时才会搜寻进去;
    • 任一:条件之间的关系为或(|),只有满足其中一个条件就会被搜寻进去;

    如此一来咱们点击搜寻的时候就能失去一个 FilterConfig,再将此构造进行肯定转换,传递给接口后就能够实现数据的搜寻。

    PS:表单数据的搜寻是用 [Elasticsearch] 实现的,因而会有 FilterConfig 到 Elasticsearch 的 AST 的一个互相转换,这里的具体实现环节待下回分解。

    \5.png)

    总结

    一般的搜寻不能配置条件之间的关系和条件的比拟符号,而咱们引入的高级搜寻就解决了这个问题,通过各种搜寻条件的组合咱们就能更加疾速的失去指标数据。大大晋升了咱们工作的效率。

    \6.png)

    援用

    Elasticsearch:https://www.elastic.co/cn/

    本文由博客一文多发平台 OpenWrite 公布!

  • 关于json:通过ve模板实现一键在线视频制作

    通过ve模板实现一键在线视频制作。具体工具从以下网站获取:
    http://vesdk.com/ https://www.mbjia.com/ 。
    ve视频引擎领有弱小的ae导出工具个渲染sdk, 咱们能够从ae工具中导出根底模板,通过渲染sdk进行视频制作。https://www.mbjia.com/ 就是通过这种模式实现一键视频制作。

    • ve视频模板

      模板文件夹构造

      assets:寄存所有参加模板渲染资源文件
      datas:寄存所有动画数据文件
      ui:寄存ui界面设计所需配饰图文件
      config.json:模板配置文件
      music.mp3:音频文件

      规范模板config文件介绍

    {
        "settings": {
            "attr": 0 //属性设置 1:关上OIT渲染
        },
        "fps": 30, //模板的主帧速率
        "main": "comp0", //渲染应用的主合成的name属性,SDK反对预合成,所以导出的合层不止一个,这里定义的是主合成的name。
        "description": "合成 1", //模板的形容,对应AE中主合成的名称
        "version": "1.3.0.beta", //SDK内核版本号,与渲染成果非亲非故
        "ui_version": "2.0", //编辑界面版本号目前分为1.0与2.0 2.0界面更加欠缺更加易懂
        "type": 1, //模版属性,按位设置,1: 一般模版, 2:动静模版,4:滤镜, 512:字符动画
                        // 请留神这是一个按位设置的值,如果一般模板中含有字符动画
                        // type 的二进制值为 1001, 也就是 1 + 512 = 513
                        // 所以判断模板类型不要通过 ==  去判断, 而是通过按位与去判断,
                        // 比方判断是不是规范模板  type & 1 != 0, 而不是 type == 1 
        "snap": [], //整型数组,要截图的帧索引号,目前尚无实现
        "comps": [{ //保留所有合成对象
            "name": "comp0", //合成名称
            "duration": 150, //总帧数
            "fps": 30, //帧率
            "size": [720, 1280], //合成大小,局部机型不反对超过4096
            "bg": "#ffffffff", //背景色彩
            "layers": [{ //合成中的所有层对象
                "uuid": "layer_2", //层的惟一ID
                "ui_key": "", //设计师界面中的由设计师设置的标记
                "ui_extra": "", //设计师界面中的由设计师设置的额定信息
                "source": "assetkey0", //层所对应的资源ID
                "type": 32769, //层的属性 如3D属性,层类型等
                "blend": 0, //混合模式
                "matte": 0, //trakmat类型
                "resample": 0, //
                "enabled": true, //是否可见
                "range": [0, 0, 149,30], //对应层的终点帧Start Time,可见的终点帧In Point,可见的继续帧数(Out Point - In Point)下文有详解, 第四个数据已废除
                "mask": [], //蒙版数据
                "effects": [], //特效数据
                "transform": { //变换信息,3d层为三维数组
                    "p": [360.0, 640.0],  //地位,[x 轴坐标, y 轴坐标]
                    "a": [540.0, 960.0], //锚点,[x 轴坐标, y 轴坐标]
                    "s": [1.0, 1.0], //缩放,[x 轴缩放, y 轴缩放]
                    "t": 1.0, //透明度, 0 - 1.0
                    "r": 0.0 //旋转角度
                }
            }]
        }],
        "assets": [{ //保留所有素材对象数组
            "key": "assetkey0", //素材的惟一ID
            "ui_key": "", //设计师在导出工具中为素材设置的标识key
            "ui_extra": "", //设计师在导出工具中为素材设置的附加数据
            "fps": 30, //在AE中解释素材选项中如果指定帧速率,则存在此key,否则为0或不存在
            "name": "asset1.mp4", //素材的名称,依据素材类型type的不同,name字段的作用也不同  
            "type": 1, //素材的类型 0:未知的素材类型 1:图片或视频或图片序列帧素材 2:OpenGL纹理素材 3:预合成素材 4:固态色彩素材 5:自定义素材
            "num": 0, //如果该素材为图片序列帧素材,那么这个num代表序列帧文件的数量,其余状况下num字段为0
            "text_anim":"data.json", //文字动画数据,仅开启高级字符动画时存在
            "size": [1080, 1920], //素材大小,ui 2.0 文字素材不再应用这个尺寸(参考 editSize)
            "ui":{//变换信息仅反对2D 图片与文字只同时存在一种
                "f":"a.png", //前景图(配饰图)
                "b":"b.png", //背景图
                //图片素材信息
                "group": 10, //组索引
                "index": 0, //组内索引
                "duration": 278, //继续帧数(以主合成帧率为基准的最大帧数)
                "accept": 0, //承受素材类型
                "type": 1, //可编辑类型 1:图片 2:文字 3: 高级字符动画文字
                "editSize": [100, 100], // 编辑区域,图片素材大小
                "p": [100.5, 38.0],  
                "a": [100.5, 38.0],
                "s": [1.0, 1.0],
                "t": 1.0,
                "r": 0.0,
                "area": [0, 0, 100, 100] // 设计师指定的点击选中区域, 别离是 x轴坐标, y轴坐标, width, height
    
                //文字素材信息
                "group": 9, //组索引
                "index": 0, //组内索引
                "duration": 348, //继续帧数(以主合成帧率为基准的最大帧数)
                "type": 2, //可编辑类型 1:图片 2:文字 3: 高级字符动画文字
                "default": "编辑文字", //默认文字
                "max": 4, //最大字数
                "font": "SimHei", //字体残缺名称
                "font_style": "Regular", //字体款式(例如粗体、细体或斜体等)
                "font_family": "STSong",//字体系列名称
                "font_file": "Songti.ttc",//字体文件名称(不保障为所有字体类型返回字符串;对于某些类型的字体,返回值可能是空字符串)
                "size": 92, //字体大小
                "line_height": 110, //行高
                "fill": "#ffffff", //填充色彩
                "stroke": "#000000", //描边色彩
                "width": 0, //描边宽度
                "strokeOverFill": true, //描边是画在填充之上
                "align": 0, //排版形式 0:左对齐 1:右对齐 2:居中对齐
                "direction": 0,//文字方向 0:横向文字 1:纵向文字
                //--------------------------------------------------------------------------------
                //type=3类型文字可调用SDK绘制图片,须要用到以下信息
                "box_text":true, //是否是文本框类型文字(仅高级字符动画反对)
                "adapt":true, //是否开启自适应(仅高级字符动画反对)
                "bound":[-50,-50,100,100], //文本框[x,y,width,height](仅高级字符动画反对)
                //--------------------------------------------------------------------------------
                "faux_bold":true, //是否应用仿粗体 (高级字符动画暂未反对)
                "faux_italic":true, //是否应用仿斜体 (高级字符动画暂未反对)
                "shadow": "#000000", //投影 (弃用,图层款式投影已反对)
                "s_alpha": 0.0,//(弃用,图层款式投影已反对)
                "s_angle": 0,//(弃用,图层款式投影已反对)
                "s_dist": 0,//(弃用,图层款式投影已反对)
                "s_size": 0,//(弃用,图层款式投影已反对)
                "editSize": [100, 100], // 编辑区域,文字图片素材大小
                "p": [0.0, 0.0],
                "a": [0.0, 0.0],
                "s": [1.0, 1.0],
                "t": 1.0,
                "r": 0.0,
                "area": [0, 0, 100, 100] // 设计师指定的点击选中区域, 别离是 x轴坐标, y轴坐标, width, height
            }
        }],
            "ui_group": [ // 对应 assets->ui->group 
            {
                "size": [
                    720,
                    1080
                ]
            },
            {
                "size": [
                    720,
                    1080
                ]
            }
        ]
    }

    confi配置文件中蕴含模板所有素材信息和参数,咱们能够通过这些参数编辑组装咱们须要制作的是的对应json,而后通过渲染sdk实现视频制作。

    • 模板解析
      次要解析config.json文件获取上述模型中所须要的信息(模板类型,sdk版本,ae版本,fps,size,duration 等都能够间接获取应用,可替换文字数量和可替换图片数量须要遍历assets获取。解析可编辑的 asset (有 ui 字段),把默认替换素材(name 字段), 前景图(f字段),后景图(b字段),config.json 后上传至云端供前端模板编辑是获取素材应用;
    • 模板编辑
      前端在初始化实现编辑界面后, 能够对可编辑素材进行编辑, 比方旋转, 缩放,位移, 更改文字内容. 之后把数据组装成 replaceJson replaceJson详解 后, 再调用后端 api 组成渲染工作数据, 调用渲染api 开启视频渲染即可.

    本篇文章旨在为大家为大家实现一键视频制作提供思路。想要具体理解VE视频引擎能够去网站征询,获取具体服务。

  • 关于json:在线JSON转YAML工具

    在线JSON转YAML工具

    在线JSON转YAML工具

    JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格局。它基于 ECMAScript (欧洲计算机协会制订的js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。

    YAML(/ˈjæməl/,尾音相似camel骆驼)是一个可读性高,用来表白数据序列化的格局。YAML参考了其余多种语言,包含:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中取得灵感。

    https://tooltt.com/json2yaml/

  • 关于json:在线JSON转HTML工具

    在线JSON转HTML工具

    在线JSON转HTML工具

    JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格局。它基于 ECMAScript (欧洲计算机协会制订的js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。

    HTML的全称为超文本标记语言,是一种标记语言。它包含一系列标签.通过这些标签能够将网络上的文档格局对立,使扩散的Internet资源连贯为一个逻辑整体

    https://tooltt.com/json2html/

  • 关于json:在线JSON转CSVTSV工具

    在线JSON转CSV,TSV工具

    在线JSON转CSV,TSV工具

    JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格局。它基于 ECMAScript (欧洲计算机协会制订的js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。

    CSV文件:Comma-Separated Values,中文叫,逗号分隔值或者字符宰割值,其文件以纯文本的模式存储表格数据。

    https://tooltt.com/json2csv/

  • 关于json:在线JSON转Schema工具

    在线JSON转Schema工具

    在线JSON转Schema工具

    JSON:(JavaScript Object Notation, JS对象简谱) 是一种轻量级的数据交换格局。它基于 ECMAScript (欧洲计算机协会制订的js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。

    Schema,即XML Schema,XSD (XML Schema Definition)是W3C于2001年5月公布的举荐规范,指出如何模式形容XML文档的元素。XSD是许多XML Schema 语言中的一支。XSD是首先拆散于XML自身的schema语言,故获取W3C的举荐位置。

    https://tooltt.com/json2schema/