在大型中后台应用(或low code平台)的动态表单等场景下,传统JSON Schema式方案的结构十分臃肿。为什么这时不考虑直接将图灵完备的JS(或其简单子集)作为数据存储,以此来替代JSON呢?这样很容易将「联动、嵌套」地建立表单的流程,用JS来语义化地表达,而不是不停地把JSON Schema做得越来越重。以现代JS的语法,将JS直接作为DSL时,数据结构也完全可以设计得很简洁,像这样:() => [
() => ({ name: '用户名', type: 'user' }),
() => ({ name: '密码', type: 'password', minLength: 8 }),
() => ({ name: '验证码', type: 'number' })
]以现在的前端技术生态,有两点能支撑这种设想的重要突破:前后端interop方面,同构架构已经普及,对这种数据做解析和CURD是容易的。安全性方面,除了iframe沙箱外,现在还可以用编译到WASM的QuickJS等嵌入式引擎来eval此类数据,杜绝潜在的注入隐患。并且在经典的JSONP跨域方案中,后端接口已经是在动态生成script脚本了。所以这应该也不算是完全没有先例的异想天开吧。希望能收集一些对这种设想可行性的讨论和反馈,谢谢。
外行?理论上,js是一种脚本语言(JavaScript),json(JavaScriptObject Notation, JS 对象简谱)是一种轻量级数据交换格式,是js的一个子集,没有替代不替代一说,后端语言php、java等开发的api接口,返回json标准格式数据,便于前端调用,前端可以使用js读取json数据结果展示到网站上!为什么是json,因为json是一个标准的数据交互格式,大部分语言都可以读取json数据,这样的话就可以开发多端,比如流行的微信小程序、app、网站三端,同步数据!
javascript如何处理json数据?
我是点点小萱,这个问题我来回答。
json
首先我们来介绍下javascript,JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
js已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
而json(全称JavaScript Object Notation)则是JS对象的简谱,是一种轻量级的数据交换格式。它是基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,它通过完全独立于编程语言的文本格式来存储和表示数据信息。
我们可以这样理解:JSON是JS对象的字符串表示形式,它使用文本来表示一个JS对象的信息,其本质是一个字符串。
用json格式来表示数据,这样更容易让人阅读和编写,同时对于机器的解析和生成也更加简单。
javascript处理json
在js中,我们通常用JSON.parse()方法来解析JSON字符串。
①创建一个json字符串:
var jsonStr = '[{"name1":{"address1":"北京市朝阳区"}},{"name2":{"address2":"北京市西城区"}},{"name3":{"address3":"北京市海淀区"}}]';
②通过JSON.parse()方法来解析json字符串为一个对象:
var json = JSON.parse(jsonStr);
//打印对象信息
console.log(json);
③遍历对象获取对象中的属性值
// 循环遍历对象,获取key -- value
for(var i = 0; i < json.length; i++){
// {"name1":{"address1":"北京市朝阳区"}}
var itemJson = json[i];
// 再次遍历获取
for(var key in itemJson){
console.log(key);
// {"address2":"北京市西城区"}
var childItem = itemJson[key];
// 再次遍历获取
for (var keyItem in childItem) {
console.log(keyItem + " -- " + childItem[keyItem]);
}
}
}
我们可以看到解析后,打印的对象信息,以及对象的遍历信息:
如此,一个简单的json字符串解析就完成了。另外,提供一个在线解析的工具:
http://tools.jb51.net/code/HtmlJsRun
感兴趣的朋友可以使用这个工具,测试上述代码运行的效果。
我是点点小萱,如有不足之处,欢迎点评、建议。
------------河南新华
"
php如何接收json数据?
引言
前几篇文章我们讲了表单数据的接收,验证等功能。也说到了传送的数组如何处理, 今天我们说一下如果传送的数据是JSON格式,其处理流程。
学习时间
如果知道传入的数据是JSON格式,作为新手可能会直接从输入获取,这些组织代码:
$json = file_get_contents('php://input');
$data = json_decode($json,true);
解析为关联数组,输出内容大概如下:
[ { "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" } ]
前端请求数据时,可以采用纯手动组装JSON字符串,然后整体提交的方式:
$.ajax({
type: "POST",
url: "/people",
data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]',
contentType: "json",
success:function(data) { // code }
});
这里是使用jquery的ajax方法发起请求。data 没有使用object对象传输数据, 而是一个整体的字符串。所以在接收的时候使用了原生的PHP方法。
这个做法很原始,也非常不灵活。其实接收请求参数的时候,我们可以使用laravel提供的 request 对象进行操作, 比如这样接收:
$data = json_decode($request->getContent(), true);
其中 getContent 方法返回的就是原始的提交数据的字符串内容。
或者我们对于post请求的数据,使用 Request 的 json 方法,将其进行json化,这将返回一个 ParameterBag 对象。 再将其格式化为数组即可:
$data = $request->json()->all();
写在最后
本文介绍了laravel格式化网络请求的json格式数据的方式。 知识点很小,但是很实用,希望大家能够熟练掌握。
Happy coding 🙂
我是@程序员小助手,持续分享编程知识,欢迎关注。