JSON은 JavaScript의 백미라고 할 수 있으며, 우아하고 간결한 코드로 Object와 Array의 초기화를 구현할 수 있습니다. 이는 또한 기호 분리보다 의미론적이며 XML보다 간결한 텍스트 기반 데이터 정의이기도 합니다. 따라서 점점 더 많은 JS 개발자가 이를 데이터 전송 및 저장으로 사용하고 있습니다.
JS 배열에는 데이터 쿼리 및 필터링을 용이하게 하는 유용한 메서드가 많이 내장되어 있습니다. 예를 들어, 다음과 같은 데이터가 있습니다.
var Heroes = [
// 이름============공격======방어========힘====민첩===== 지능====
이름: '얼음방 마녀', DP: 38, AP: 1.3, STR: 16, AGI: 16, int: 21},
{name: 빌려준 흑마법사', DP: 39, AP: 1.1, STR: 17, Agi:16, Int:21},
{name:'나가 사이렌', DP:51, AP:6.0, Str:21, Agi:21, Int:18} ,
{이름 :'현상금 사냥꾼', DP:39, AP:4.0, Str:17, Agi:21, Int:16},
18, Agi:22, Int:15},
{name:'빛의 수호자', DP:38, AP:1.1, Str:16, Agi:15, Int:22},
{name: '연금술사', DP:49, AP:0.6, Str :25, Agi:11, Int:25}
방어력이 40보다 크고 방어력이 4보다 작은 영웅의 경우 Array의 필터 방법을 사용할 수 있습니다.
코드 복사
먼저 위 코드를 이렇게 작성할 수 있고,
질의 속도가 손으로 쓴 순회 판단과 같다
:
코드 복사
코드는 다음과 같습니다.
예를 들어 위의 선택 문자의 경우 "@"를 "e."로, "AND"를 "&&"로 바꾸면 eval 구현에 전달할 수 있는 합법적인 js 표현식이 됩니다. .
그래서 우리가 해야 할 일은 원본 명령문을 js 명령문으로 변환하여 실행하는 것입니다. 그리고 효율성을 높이기 위해 변환된 js 표현식은 각 순회에서 판단을 위해 콜백에 의존하는 대신 실행 가능한 함수 본문을 생성하기 위해 컨텍스트 환경에 인라인됩니다.
따라서 함수 템플릿이 유용할 것입니다.
함수 템플릿 소개C에는 매크로 및 클래스 템플릿과 같은 것이 있는데, 이를 통해 컴파일 단계에서 일부 계산을 완료하여 성능을 크게 향상시킬 수 있습니다. 런타임 코드. 엄격한 의미에서 스크립트가 컴파일되지는 않지만 처음 실행될 때 구문 분석되고 완전히 최적화됩니다. 이는 현재 주류 브라우저 간의 경쟁 지점입니다. 따라서 미리 제공된 템플릿 함수에 반복되는 평가 코드를 삽입해야 합니다. 준비가 되어 있고 표현식 계산만 필요한 함수:
코드 복사
코드는 다음과 같습니다.
/**
* 템플릿: tmplCount
* 기능: arr 배열에서 $express와 일치하는 표현식의 개수를 계산합니다.
*/
function tmplCount(arr) {
var count = 0;
for(var i = 0; i var e = arr[i];
if($express) {
🎜>위는 arr [] 매개변수를 순회하여 $express와 일치하는 숫자를 세는 템플릿 함수입니다. if(...) 내의 표현식을 제외하고 다른 모든 것이 준비되었습니다. $express 문자는 함수의 다른 문자와 충돌하지 않는 한 다른 식별자로 대체될 수도 있습니다.
인스턴스가 필요한 경우 먼저 tmplCount.toString()을 통해 함수를 문자열 형식으로 변환한 다음 $express를 원하는 표현식으로 바꾸고 마지막으로 이 문자열을 평가하여 인스턴스인 함수 유형 변수를 얻습니다. 템플릿 함수가 생성됩니다!
간단한 데모를 보여드리겠습니다.
코드 복사
코드는 다음과 같습니다.
function createInstance(exp)
{
// 템플릿의 표현식 교체
var code = tmplCount.toString()
.replace ('$express', exp);
// 익명 함수가 오류를 직접 평가하는 것을 방지
var fn = eval('0,' code);
// 템플릿 인스턴스 반환
// 테스트 매개변수
var Student = [
{name: 'Jane', age: 14}, {name: 'Jack', age: 20},
{이름: '아담', 나이: 18}
];
var f1 = createInstance('e.age Alert(f1(student)) //1
// 데모2
var f2 = createInstance('e.name!="Jack" && e.age>=14');
Alert(f2(student)) //2
createInstance()의 매개변수 중에는 e라는 객체가 있는데, 이는 tmplCount 템플릿에 정의되어 있으며 순회 중에 특정 요소를 참조합니다. 반환된 f1과 f2는 tmplCount 템플릿의 두 인스턴스입니다. 최종 호출된 f1 및 f2 함수에는 동일한 함수를 사용하여 두 개의 함수를 미리 작성한 것처럼 이미 표현식 문이 포함되어 있으므로 콜백이나 기타 작업 없이 순회 중에 표현식이 직접 실행되므로 상당한 개선이 이루어졌습니다.
사실 직설적으로 말하면 tmplCount는 이 함수의 문자열을 제공하기 위해서만 존재하며 자체는 호출되지 않습니다. 실제로 문자열 형태의 정의는 동일하지만, 함수로 작성하는 것이 테스트하기에 더 직관적이고 편리합니다.
나중에 스크립트에 압축 최적화가 필요한 경우 tmplCount 템플릿이 포함되어서는 안 됩니다. 그렇지 않으면 해당 "e." 및 "$express"가 변경될 수 있습니다.
JSON 기본 쿼리 기능
먼저 쿼리 템플릿을 구현합니다.
코드 복사
코드는 다음과 같습니다. // for(var _k in _list) { 그런 다음 Object의 select 메서드 작성을 시작합니다. var code = __interpret(exp); //표현식 해석
var __proto = Object.prototype;
// 템플릿: __tmpl
// 매개변수: $C
// 설명: _list 객체에서 $C와 일치하는 요소 집합을 기록하고 반환합니다.
//
var __tmpl = function(_list) {
var _ret = [];
var _i = -1;
var _e = _list[_k];
if(_e && _e != __proto[_k]) {
if ($C)
}.toString();
코드 복사
__proto.select = function(exp) {
If(!exp)
return [];
var fn = __cache[exp];
try { if(!fn) {
fn = __cache[exp] = __compile(code); ~
fn(this) 반환; }
}
__cache 테이블은 쿼리 문의 캐시를 구현합니다. 반복 쿼리의 경우 성능이 크게 향상될 수 있습니다.
코드 복사
코드는 다음과 같습니다.
function __compile() {
jsonselect.rar
시연을 위해 현재 일부 기본 기능만 구현되어 있습니다. 앞으로는 LIKE, BETWEEN, ORDER BY 및 기타 일반적으로 사용되는 기능을 추가할 수도 있습니다.
데모
코드는 다음과 같습니다.
// 이름 ====================== 힘 === 민첩 == ===지능== ==
{name:'얼음집 마녀', DP:38, AP:1.3, Str:16, Agi:16, Int:21},
{name:'침묵의 흑마법사', DP:39, AP :1.1, Str:17, Agi:16, Int:21},
21, },
{name:'현상금 사냥꾼', DP:39, AP:4.0, Str:17, Agi :21, Int:16},
{name:'Venomancer' ', DP:45, AP:3.1, Str:18, Agi:22, Int:15},
{name:'빛의 수호자 ', DP:38, AP:1.1, Str:16, Agi:15 , Int:22},
// 쿼리:
"Scholar"로 끝남 // 결과: Silence Warlock, Venomancer, Alchemist var match = Heroes.select('right(@name,1)="Shi" ');
// 쿼리:
체력이 500 이상 // 결과: Alchemist

1、先看看效果图,可以自行选择展示效果2、这是我在vue3项目中使用的JSON编辑器,首先引入第三方插件npminstalljson-editor-vue3yarnaddjson-editor-vue33、引入到项目中//导入模块importJsonEditorVuefrom'json-editor-vue3'//注册组件components:{JsonEditorVue},4、一般后端返回的是会将JSON转为String形式我们传给后端也是通过这种形式,就可以通

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

Java调用接口获取json数据保存到数据库1.在yml文件中配置自己定义的接口URL//自己定义的JSON接口URLblacklist_data_url:接口URL2.在Controller中添加请求方法和路径/***@Title:查询*@Description:查询车辆的记录*@Author:半度纳*@Date:2022/9/2717:33*/@GetMapping("/Blacklist")publicvoidselectBlacklist(){booleana=imB

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

JSONSchemaJSONSchema是用于验证JSON数据结构的强大工具,Schema可以理解为模式或者规则。JsonSchema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包括成员、结构、类型、约束等。JSONSchema就是json的格式描述、定义、模板,有了他就可以生成任何符合要求的json数据json-schema-validator在java中,对json数据格式的校验,使用

一、@RestController注解在SpringBoot中的Controller中使用@RestController注解即可返回JSON格式的数据。@RestController注解包含了@Controller和@ResponseBody注解。@ResponseBody注解是将返回的数据结构转换为JSON格式。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@Respons


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
