標籤:整數 image 注意 規範 執行個體 使用 cli jin python
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。JSON是用字串來表示Javascript對象;
Json字串就是js對象的一種表現形式(字串的形式)
不管是python還是其它語言,它們都有自己的資料類型,但如果要處理成json字串就需要把資料換轉成js對應的資料對象(比如python的元組就被處理成了數組,字典就被處理成object),再加上引號就是json字串了;
前端接受到json字串,就可以通過JSON.parse()等方法解析成json對象(即js對象)直接使用了
Json的資料類型
· 數字 (整數或浮點數)
· 字串 (必須雙引號)
· 邏輯值 (true 或 false)
· 數組 (在方括弧中)
· 對象 (在花括弧中,引號用雙引)
null
Json和Python對象的對應
Json執行個體
settigs.py:
‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)], # 設定templates的路徑為Django以前版本# ‘DIRS‘: [], # 注釋掉該行,此為Django 2.0.1最新版本# ‘django.middleware.csrf.CsrfViewMiddleware‘, ...省略預設配置STATIC_URL = ‘/static/‘TEMPLATE_DIRS = (os.path.join(BASE_DIR, ‘templates‘),) # 原配置# 靜態資源檔案STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics"),) # 現添加的配置,這裡是元組,注意逗號
templates/ajax_jquery.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"></head><body><button onclick="func1()">Ajax提交</button></body><script src="/static/jquery-3.2.1.js"></script><script> function func1() { Test(); } function Test() { $.post("/jquery_ajax_test/", function (data) { console.log(‘轉換前:‘); console.log(data); {# JSON字串 #} console.log(typeof data); console.log(data["name"]); console.log(‘轉換後:‘); {# JSON對象 #} per = JSON.parse(data); console.log(per); console.log(typeof per); console.log(per["name"]);}) }</script></html>
mysite2/urls.py
from django.contrib import adminfrom django.urls import pathfrom blog import viewsfrom django.conf.urls import urlurlpatterns = [ # Jquery_Ajax url(r‘ajax-jquery/‘, views.ajax_jquery), # jquery_ajax_test url(r‘jquery_ajax_test/‘, views.jquery_ajax_test),]
views.py
from django.shortcuts import render, HttpResponseimport datetime # Jquery --> ajaxdef ajax_jquery(request): # return HttpResponse("Hello ,Jquery_ajax") return render(request, ‘ajax_jquery.html‘)# Jquery --> ajaximport jsondef jquery_ajax_test(request): print(‘request.POST‘, request.POST) person={‘name‘: ‘FTL‘, ‘age‘: 24} obj = json.dumps(person) # 字典轉換為json格式的字串 return HttpResponse(obj) # HTTPResponse只能返回字串,這裡返回前台json字串
頁面顯示:
注意:JS可以列印類似Python中字典的對象內容
{# JS可以列印類似Python中字典的對象內容 #}data = {"school": "Peking", "city": "Beijing"};console.log(data["school"]); {# Peking #}
帶方法的json對象
person是一個json對象,因為它滿足json規範:在json六大範疇且引號雙引
function Test() { var person = {"name":"FTL", "sex":"men", "teacher":{ "name":"HHH", "sex":"half_men", }, "bobby":[‘basketball‘,‘running‘], "getName":function() {return 80;} }; console.log(person.name); console.log(person.getName()); console.log(person.teacher.name); console.log(person.bobby[0]);
json對象
的方法:
json對象的方法:
parse() 用於從一個json字串中解析出json對象,如 var str = ‘{"name":"HHH","age":"23"}‘ 結果:JSON.parse(str) ------> Object {age: "23",name: "yuan"}stringify()用於從一個json對象解析成json字串,如 var c= {a:1,b:2} 結果: JSON.stringify(c) ------> ‘{"a":1,"b":2}‘注意1:單引號寫在{}外,每個屬性名稱都必須用雙引號,否則會拋出異常。注意2: a={name:"yuan"}; //ok b={‘name‘:‘yuan‘}; //ok c={"name":"yuan"}; //ok alert(a.name); //ok alert(a[name]); //undefined alert(a[‘name‘]) //okJSON與XML比較
JSON與XML比較
· 可讀性: XML勝出;
· 解碼難度:JSON本身就是JS對象(主場作戰),所以簡單很多;
· 流行度: XML已經流行好多年,但在AJAX領域,JSON更受歡迎。
註解:其實本沒什麼json對象,只是我們自己這麼稱呼罷了,所謂的json資料就是指json字串,在前端解析出來的對象就是js對象的一部分!
Python學習---JSON學習180130