json文本,可理解为一组类似于pytho的字典型格式文本:
“json属性:{“json对象属性1”:值1”,”json对象属性2”:”值2”,“json对象属性31”:[{“json对象属性31”:”值4”},{“json对象属性32”:”值5”}]}”
其对象属性可以嵌套,但最多不要超过4层
json最简单使用步骤:
1、定义变量类型为json类:
2、json解析.(json文本,) —返回bool型,解析是否成功。json文本为自己定义的变量,或 获得的json文本
3、json.取通用属性(“json的对象属性”,)——返回json的对象属性对应的值。
对于嵌套的json的对象属性调用(嵌套是指里面带【】),需要将上级的对象属性列出,如上面格式的 值4 的调用
json.取通用属性(json对象属性31[0].json对象属性31)
json对象属性31[0],中的[0],表示第一组,如调用值5 则为【1】,
json.取通用属性(json对象属性31[1].json对象属性31)
例子:
下面是百度发票识别的信息代码的json文本:{"words_result":{"AmountInWords":"壹拾万圆整","InvoiceNumConfirm":"14641426","CommodityPrice":[],"NoteDrawer":"沈园园","SellerAddress":"嘉定区胜辛南路500号15幢1161室55033753","CommodityNum":[],"SellerRegisterNum":"913101140659591751","MachineCode":"","Remarks":"","SellerBank":"中国银行南翔支行446863841354","CommodityTaxRate":[{"row":"1","word":"6%"}],"TotalTax":"5660.38","InvoiceCodeConfirm":"3100153130","CheckCode":"","InvoiceCode":"3100153130","InvoiceDate":"2016年06月02日","PurchaserRegisterNum":"110108787751579","InvoiceTypeOrg":"上海增值税专用发票","Password":"074/45781873408>/6>8>65*887676033/51+<5415>9/32--852>1+29<65>641-5>66<500>87/*-34<943359034>716905113*4242>","Agent":"否","AmountInFiguers":"100000.00","PurchaserBank":"招商银行北京分行大屯路支行866182028510003","Checker":"沈园园","City":"","TotalAmount":"94339.62","CommodityAmount":[{"row":"1","word":"94339.62"}],"PurchaserName":"百度时代网络技术(北京)有限公司","CommodityType":[],"Province":"","InvoiceType":"专用发票","SheetNum":"第三联","PurchaserAddress":"北京市海淀区东北旺西路8号中关村软件园17号楼二层A2010-59108001","CommodityTax":[{"row":"1","word":"5660.38"}],"CommodityUnit":[],"Payee":"徐蓉","CommodityName":[{"row":"1","word":"信息服务费"}],"SellerName":"上海易火广告传媒有限公司","InvoiceNum":"14641426"},"log_id":1364399092964261888,"words_result_num":38}
读取代码如下:
.版本 2
.支持库 spec
bool = json.解析 (源码, )
调试输出 (bool)
.如果 (bool)
文本 = 文本 + “发票类型:” + json.取属性对象 (“words_result.InvoiceType”) + #换行符
文本 = 文本 + “发票名称:” + json.取属性对象 (“words_result.InvoiceTypeOrg”) + #换行符
文本 = 文本 + “发票代码:” + json.取属性对象 (“words_result.InvoiceCode”) + #换行符
文本 = 文本 + “发票号码:” + json.取属性对象 (“words_result.InvoiceNumConfirm”) + #换行符
文本 = 文本 + “开票日期:” + json.取属性对象 (“words_result.InvoiceDate”) + #换行符
文本 = 文本 + “联次:” + json.取属性对象 (“words_result.SheetNum”) + #换行符
文本 = 文本 + “密码区:” + json.取属性对象 (“words_result.Password”) + #换行符
文本 = 文本 + “收款人:” + json.取属性对象 (“words_result.Payee”) + #换行符
文本 = 文本 + “复核:” + json.取属性对象 (“words_result.Checker”) + #换行符
文本 = 文本 + “开票人:” + json.取属性对象 (“words_result.NoteDrawer”) + #换行符
文本 = 文本 + “购方名称:” + json.取属性对象 (“words_result.PurchaserName”) + #换行符
文本 = 文本 + “购方纳税人识别号:” + json.取属性对象 (“words_result.PurchaserRegisterNum”) + #换行符
文本 = 文本 + “购方地址及电话:” + json.取属性对象 (“words_result.PurchaserAddress”) + #换行符
文本 = 文本 + “购方开户行及账号:” + json.取属性对象 (“words_result.PurchaserBank”) + #换行符
文本 = 文本 + “销售方名称:” + json.取属性对象 (“words_result.SellerName”) + #换行符
文本 = 文本 + “销售方纳税人识别号:” + json.取属性对象 (“words_result.SellerRegisterNum”) + #换行符
文本 = 文本 + “销售方地址及电话:” + json.取属性对象 (“words_result.SellerAddress”) + #换行符
文本 = 文本 + “销售方开户行及账号:” + json.取属性对象 (“words_result.SellerBank”) + #换行符
文本 = 文本 + “货物名称:” + json.取属性对象 (“words_result.CommodityName[0].word”) + #换行符
文本 = 文本 + “规格型号:” + json.取属性对象 (“words_result.”) + #换行符
文本 = 文本 + “单位:” + json.取属性对象 (“words_result.”) + #换行符
文本 = 文本 + “数量:” + json.取属性对象 (“words_result.”) + #换行符
文本 = 文本 + “单价:” + json.取属性对象 (“words_result.”) + #换行符
文本 = 文本 + “金额:” + json.取属性对象 (“words_result.CommodityAmount[0].word”) + #换行符
文本 = 文本 + “税率:” + json.取属性对象 (“words_result.CommodityTaxRate[0].word”) + #换行符
文本 = 文本 + “税额:” + json.取属性对象 (“words_result.CommodityTax[0].word”) + #换行符
文本 = 文本 + “合计金额:” + json.取属性对象 (“words_result.TotalAmount”) + #换行符
文本 = 文本 + “合计税额:” + json.取属性对象 (“words_result.TotalTax”) + #换行符
文本 = 文本 + “价税合计(大写):” + json.取属性对象 (“words_result.AmountInWords”) + #换行符
文本 = 文本 + “价税合计(小写):” + json.取属性对象 (“words_result.AmountInFiguers”) + #换行符
应用扩展:
json各种格式用json类来取值的方法:
1. 单一键值对(取出单个value)
- {
“name”: “丁丁”,
“age”: 22
}
PasteImage.png
**_2. 数组之数值(遍历数组中的数值)**
- {
“num”:[1,2,3,4]
}
PasteImage.png
**_3. 数组之键值对(遍历数组中某个key的value)**
{
“student”: [
{
“name”: “丁丁”,
“age”: 22
},
{
“name”: “yanyu”,
“age”: 20
}
]
}
PasteImage.png
**_4. 键值对套键值对(3的其他一个部分;遍历一个键值对的所有value)**
- {
“student”: {
“name”: “丁丁”,
“age”: 22
}
}
PasteImage.png
**_5. 类_json 取通用属性(支持a.b.c[0]或者[0].a.b; 取所有Name值)**
如果现在只是为了取某一个值,并不需要遍历,那么可以使用该方法
- {
“name”: “丁丁”,
“person”: {
“name”: “yanyu”,
“age”: 20
},
“student”: [
{
“name”: “丁昌江”,
“age”: 22
}
]
}
![易宝典 006 关于json - 图10](/uploads/projects/luobotounet@vtlcl9/fa83088c8007ebc7d38edb6488b76ed8.webp)
Paste_Image.png