一、JSON建构有两种结构:
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。在Java中就是一种Map结构。
2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。在Java中是一种list结构。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
二、Json in Javascript
使用Json语法创建对象
var people = {"name":"jack","sex":"mail"};
可以通过这种语法创建json对象,用“{}”括起来,用“,”隔开key:value
使用Json语法创建数组
var arr =[value1,value2];
一个包含多个people的数组 peoples = [{"name":"jack","sex":"mail"},
"name":"lily","sex":"femail"};
Json数组可以通过这种语法创建,用"[]"括起来,数组元素之间用“,”分隔开,下面是这种语法的示意图:
在使用Json格式字符串与服务器交互时候,可以利用Json扩展的方法将字符串转换成一个JavaScript对象,或者将一个对象转换成Json格式字符串。不过先要登录>
访问数据
只需用点号表示法来表示数组元素。所以,要想访问 上面peoples列表的第一个条目的名字,只需在 JavaScript 中使用下面这样的代码:
peoples[0]name
利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。
修改数据
正如可以用点号和方括号访问数据,也可以按照同样的方式轻松地修改数据:
peoples[0]name = "Rachmaninov";
在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。
随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。
一,本地存储特性
1、数据存储在用户浏览器中
2、设置、读取方便、甚至页面刷新不丢失数据
3、容量较大约5M
4、只能存储字符串,可以将对象JSONstringify() 编码后存储
二,windowsessionStorage
1、生命周期为关闭浏览器窗口
2、在同一个窗口(页面)下数据可以共享
3、以键值对的形式存储使用
存储数据:
sessionStoragesetItem(key,value)
获取数据:
sessionStoragegetItem(key)
删除数据:
sessionStorageremoveItem(key)
清空数据:(所有都清除掉)
sessionStorageclear()
三windowlocalStorage
存储空间高达5m
没有过期时间
localStorage 会一直存在
sessionStorage 窗口关闭失效
cookie会在客户端和服务器端往返 ,本地存储只存储在本地
存储数据:
设置存储有三种方式:
localStoragekey="value"
localStorage["key"]="value"
localStoragesetItem(key, value)
localStoragesetItem(key,value)
//参数1 是键
//参数2是对应的值
//setItem 也是修改元素
注意:不能直接存储对象 可以将对象转化为1个字符串
//注意:不能直接存储对象 可以将对象转化为1个字符串
//通过json
varstr=JSONstringify(对象名);
localStoragesetItem('对象名',str);
//使用的时候可以再将json字符串转为对象
varstr1=localStoragegetItem('对象名');
varobj=JSONparse(str);
获取数据:
localStoragegetItem(key(1))
//通过索引获取key值
//没有就返回null
删除数据:
localStorageremoveItem(key)
//删除 通过key值
清空数据:(所有都清除掉)
localStorageclear()
对象长度(有多少个元素)
localStoragelength
如果你只是偶尔查一次,那就遍历吧,用 []every 还是很容易写的,或者用 for in 也不难。
但是如果需要经常查找,那最好建立一个查找表,比如
function createLookMap(field) {
var map = {}
for (var i = 0; i < jsonArrlength; i++) {
var item = jsonArr[i]
var key = item[field]
map[field] = item
}
return map
}
var idMap = createLookMap("id")
在查找的时候只需要直接从 idMap 中取就行了
var id = needId()
var obj = idMap[id] // the found object or undefined
如果还需要按 name 来查找,可以再建一个查找表
var nameMap = creaetLookMap("name")
如果 name 不是唯一的,那创建查找表的时候就要耍点手段,保存一个数组而不是一个对象
function createLookMap(field) {
var map = {}
for (var i = 0; i < jsonArrlength; i++) {
var item = jsonArr[i]
var key = item[field]
var list = map[key]
fi (!list) {
map[key] = list = []
}
listpush(item)
}
return map
}
mysql某张表中有一个字段为json格式,假设字段名为properties
{
"ocspeventappend-timestampenable": "true",
"ocspstreamingdatafilterexpression": "id=e4_json",
"ocspeventenable": "true",
"ocspschemafieldnames": "id",
"ocspeventoutputnumPartitions": "0",
"ocspeventjson-formatenable": "true",
"ocspstreamingfieldtranslationenable": "false",
"ocspeventappend-idenable": "false",
"ocspstreamingdatakeys": "id",
"ocspstreamsql": "SELECT id FROM uuu_5dea34758400_oi5xs0rdaf WHERE id=e4_json",
"ocspkafkatopic": "hn_20210216b",
"ocspeventperiod": "{\"period\":\"day\",\"time\":[{\"begin\":{\"d\":\"0\",\"h\":\"03:30:23\"},\"end\":{\"d\":\"0\",\"h\":\"23:20:23\"}}],\"startDate\":\"2021-02-16\",\"endDate\":\"2021-03-28\"}",
"ocspeventperiodSwitch": "true",
"ocspeventoutput": "5d74080d1ac0"
}
现在需要查询ocspstreamsql的值 可以使用json_extract函数。注意如果该key是由点分隔符组成的,则需要用双引号将整个key包起来
select json_extract(properties,'$ "ocspschemafieldnames" ') from COMPONENT where type='EVENT' and id='5dea403ed7c0';
json_keys函数可以用来获取json中所有的key字段
同时 select json_keys (properties) from COMPONENT where type='EVENT' and id='5dea403ed7c0';
先将JSON转换成 JS Array,然后在使用each
var obj = $parseJSON(jsonString);
$each(obj,function(ky,vl) {
consolelogf("key"+ky);
consolelogf("value"+vl);
});
parseJSON貌似需要插件支持 ,还可以试试这个转换
var objson = "[{Title:'Sjr',Content:'Library',summary:'summary'},{Title:'Sjr',Content:'Library',summary:[{sum0:'sum0'},{sum0:'sum1'},{sum0:'sum2'}]},{Title:'Sjr',Content:'Library',summary:[{sum0:'sum0'},{sum0:'sum1'},{sum0:'sum2'}]}]";
var obj = eval(objson);
JSON-C实现了一个引用计数对象模型,它允许您轻松地使用C语言来构建JSON对象,将它们输出为JSON格式的字符串,并将JSON格式字符串解析回JSON对象的C语言表示形式。它的目标是符合 RFC 7159 标准。
使用automake的编译过程如下:
使用cmake编译的过程如下:
cmake可选的几个编译选项为:
要使用json-c,最简单的方式是包含jsonh头文件即可,或者最好是下列更具体的头文件之一:
详细且全面的API介绍文档: >
以上就是关于在 java web开发中怎么使用json全部的内容,包括:在 java web开发中怎么使用json、前端本地存储、json数组 根据动态key获得value 有什么好的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)