精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JSON簡介及C代碼展示JSON消息示例

開發 開發工具
本文首先對JSON進行簡單的介紹,然后用具體的C代碼示范了各類JSON消息的構造方法。

在互聯網軟件前端與后臺進行消息交互的過程中,需要有一種標準的數據交換格式供前后端采用。在眾多的數據交換格式中,JSON(JavaScript Object Notation,JS 對象標記)是應用得比較廣泛的,它采用完全獨立于編程語言的文本格式來存儲和表示數據。JSON的層次結構簡潔、清晰,易于閱讀和編寫,同時也易于機器解析和生成,這有效地提升了網絡傳輸效率。

[[192401]]

本文首先對JSON進行簡單的介紹,然后用具體的C代碼示范了各類JSON消息的構造方法。

JSON簡介

JSON 的語法規則可以用下面的四句話來概括:

  • ***,對象表示為鍵值對。
  • 第二,數據由逗號分隔。
  • 第三,花括號保存對象。
  • 第四,方括號保存數組。

具體而言,鍵值對組合中的鍵名寫在前面并用雙引號包裹,鍵值使用冒號分隔,冒號后面緊接著值,如:”name”: “zhou”;數組是用方括號包裹起來的,如:[“zhou”, “zhang”]。

JSON消息示例

本部分用實際的C代碼來示范了各類常用的JSON消息的構造方法。在編寫代碼之前,要到https://sourceforge.net/projects/cjson/上去下載C語言版的JSON封裝API。

在JSON的API中,我們常用到的有如下幾個函數:

1)cJSON_CreateObject():創建JSON對象。

2)cJSON_Delete(cJSON *c):刪除一個JSON結構。

3)cJSON_AddStringToObject(object,name,s):將一個字符串添加到對象中。

4)cJSON_AddNumberToObject(object,name,n):將一個整數添加到對象中。

5)cJSON_Print(cJSON *item):將JSON消息以文本消息的樣式輸出。

6)cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item):將一個數據(通常為對象)添加到一個對象中。

7)cJSON_CreateString(const char *string):生成字符串數據。

8)cJSON_AddItemToArray(cJSON *array, cJSON *item):將一個數據添加到一個數組中。

9)cJSON_CreateArray():創建JSON數組。

下面,我們開始編寫C代碼來生成JSON消息。

1. 如果要實現如下JSON消息:

  1.     name:"zhou", 
  2.     age:30 

則編寫C代碼函數如下:

  1. int MakeJsonNameAge(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root = NULL
  3.     char  *out  = NULL
  4.  
  5.     // 判斷函數參數是否合法 
  6.     if (pszJsonContent == NULL) 
  7.     { 
  8.         printf("MakeJsonNameAge: pszJsonContent is NULL!"); 
  9.  
  10.         return -1; 
  11.     } 
  12.  
  13.     root = cJSON_CreateObject(); 
  14.     if(NULL == root) 
  15.     { 
  16.         printf("MakeJsonNameAge: exec cJSON_CreateObject to get root failed!"); 
  17.  
  18.         return -1; 
  19.     } 
  20.  
  21.     cJSON_AddStringToObject(root, "name", "zhou"); 
  22.  
  23.     cJSON_AddNumberToObject(root, "age", 30); 
  24.  
  25.     out=cJSON_Print(root); 
  26.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  27.     pszJsonContent[iJsonLen - 1] = '\0'; 
  28.  
  29.     cJSON_Delete(root); 
  30.     free(out); 
  31.  
  32.     return 0; 

2. 如果要實現如下JSON消息:

  1.     personinfo:{ 
  2.         name:"zhou", 
  3.         age:30 
  4.     } 

則編寫C代碼函數如下:

  1. int MakeJsonPersonInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     char  *out         = NULL
  5.  
  6.     // 判斷函數參數是否合法 
  7.     if (pszJsonContent == NULL) 
  8.     { 
  9.         printf("MakeJsonPersonInfo: pszJsonContent is NULL!"); 
  10.  
  11.         return -1; 
  12.     } 
  13.  
  14.     root = cJSON_CreateObject(); 
  15.     if(NULL == root) 
  16.     { 
  17.         printf("MakeJsonPersonInfo: exec cJSON_CreateObject to get root failed!"); 
  18.  
  19.         return -1; 
  20.     } 
  21.  
  22.     JsonLevel1 = cJSON_CreateObject(); 
  23.     if(NULL == JsonLevel1) 
  24.     { 
  25.         printf("MakeJsonPersonInfo: exec cJSON_CreateObject to get JsonLevel1 failed!"); 
  26.  
  27.         cJSON_Delete(root); 
  28.         return -1; 
  29.     }    
  30.  
  31.     cJSON_AddStringToObject(JsonLevel1, "name", "zhou"); 
  32.  
  33.     cJSON_AddNumberToObject(JsonLevel1, "age", 30); 
  34.  
  35.     cJSON_AddItemToObject(root, "personinfo", JsonLevel1); 
  36.  
  37.     out=cJSON_Print(root); 
  38.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  39.     pszJsonContent[iJsonLen - 1] = '\0'; 
  40.  
  41.     cJSON_Delete(root); 
  42.     free(out); 
  43.  
  44.     return 0; 

3. 如果要實現如下JSON消息:

  1.     personinfo1:{ 
  2.         name:"zhou", 
  3.         age:30 
  4.     }, 
  5.     personinfo2:{ 
  6.         name:"zhang", 
  7.         age:41 
  8.     } 

 則編寫C代碼函數如下:

  1. int MakeJsonTwoPersonInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     char  *out         = NULL
  5.  
  6.     // 判斷函數參數是否合法 
  7.     if (pszJsonContent == NULL) 
  8.     { 
  9.         printf("MakeJsonTwoPersonInfo: pszJsonContent is NULL!"); 
  10.  
  11.         return -1; 
  12.     } 
  13.  
  14.     root = cJSON_CreateObject(); 
  15.     if(NULL == root) 
  16.     { 
  17.         printf("MakeJsonTwoPersonInfo: exec cJSON_CreateObject to get root failed!"); 
  18.  
  19.         return -1; 
  20.     } 
  21.  
  22.     //--------------- 
  23.     JsonLevel1 = cJSON_CreateObject(); 
  24.     if(NULL == JsonLevel1) 
  25.     { 
  26.         printf("MakeJsonTwoPersonInfo: exec cJSON_CreateObject to get JsonLevel1 failed 1!"); 
  27.  
  28.         cJSON_Delete(root); 
  29.         return -1; 
  30.     }    
  31.  
  32.     cJSON_AddStringToObject(JsonLevel1, "name", "zhou"); 
  33.  
  34.     cJSON_AddNumberToObject(JsonLevel1, "age", 30); 
  35.  
  36.     cJSON_AddItemToObject(root, "personinfo1", JsonLevel1); 
  37.  
  38.     //--------------- 
  39.     JsonLevel1 = cJSON_CreateObject(); 
  40.     if(NULL == JsonLevel1) 
  41.     { 
  42.         printf("MakeJsonTwoPersonInfo: exec cJSON_CreateObject to get JsonLevel1 failed 2!"); 
  43.  
  44.         cJSON_Delete(root); 
  45.         return -1; 
  46.     }    
  47.  
  48.     cJSON_AddStringToObject(JsonLevel1, "name", "zhang"); 
  49.  
  50.     cJSON_AddNumberToObject(JsonLevel1, "age", 40); 
  51.  
  52.     cJSON_AddItemToObject(root, "personinfo2", JsonLevel1); 
  53.  
  54.     out=cJSON_Print(root); 
  55.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  56.     pszJsonContent[iJsonLen - 1] = '\0'; 
  57.  
  58.     cJSON_Delete(root); 
  59.     free(out); 
  60.  
  61.     return 0; 

4. 如果要實現如下JSON消息:

  1.     id:"123456", 
  2.     personinfo:{ 
  3.         name:"zhou", 
  4.         age:30 
  5.     } 

則編寫C代碼函數如下:

  1. int MakeJsonIDPersonInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     char  *out         = NULL
  5.  
  6.     // 判斷函數參數是否合法 
  7.     if (pszJsonContent == NULL) 
  8.     { 
  9.         printf("MakeJsonIDPersonInfo: pszJsonContent is NULL!"); 
  10.  
  11.         return -1; 
  12.     } 
  13.  
  14.     root = cJSON_CreateObject(); 
  15.     if(NULL == root) 
  16.     { 
  17.         printf("MakeJsonIDPersonInfo: exec cJSON_CreateObject to get root failed!"); 
  18.  
  19.         return -1; 
  20.     } 
  21.  
  22.     cJSON_AddStringToObject(root, "id", "123456"); 
  23.  
  24.     JsonLevel1 = cJSON_CreateObject(); 
  25.     if(NULL == JsonLevel1) 
  26.     { 
  27.         printf("MakeJsonIDPersonInfo: exec cJSON_CreateObject to get JsonLevel1 failed!"); 
  28.  
  29.         cJSON_Delete(root); 
  30.         return -1; 
  31.     }    
  32.  
  33.     cJSON_AddStringToObject(JsonLevel1, "name", "zhou"); 
  34.  
  35.     cJSON_AddNumberToObject(JsonLevel1, "age", 30); 
  36.  
  37.     cJSON_AddItemToObject(root, "personinfo", JsonLevel1); 
  38.  
  39.     out=cJSON_Print(root); 
  40.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  41.     pszJsonContent[iJsonLen - 1] = '\0'; 
  42.  
  43.     cJSON_Delete(root); 
  44.     free(out); 
  45.  
  46.     return 0; 

5. 如果要實現如下JSON消息:

  1.     personname:[ 
  2.         "zhou", 
  3.         "zhang" 
  4.     ] 

則編寫C代碼函數如下:

  1. int MakeJsonPersonNameInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     cJSON *JsonLevel2  = NULL
  5.     char  *out         = NULL
  6.  
  7.     // 判斷函數參數是否合法 
  8.     if (pszJsonContent == NULL) 
  9.     { 
  10.         printf("MakeJsonPersonNameInfo: pszJsonContent is NULL!"); 
  11.  
  12.         return -1; 
  13.     } 
  14.  
  15.     root = cJSON_CreateObject(); 
  16.     if (NULL == root) 
  17.     { 
  18.         printf("MakeJsonPersonNameInfo: exec cJSON_CreateObject to get root failed!"); 
  19.  
  20.         return -1; 
  21.     } 
  22.  
  23.     JsonLevel1 = cJSON_CreateArray(); 
  24.     if (NULL == JsonLevel1) 
  25.     { 
  26.         printf("MakeJsonPersonNameInfo: exec cJSON_CreateArray to get JsonLevel1 failed!"); 
  27.  
  28.         cJSON_Delete(root); 
  29.         return -1; 
  30.     } 
  31.  
  32.     cJSON_AddItemToObject(root, "personname", JsonLevel1); 
  33.  
  34.     JsonLevel2 = cJSON_CreateString("zhou"); 
  35.     cJSON_AddItemToArray(JsonLevel1, JsonLevel2); 
  36.  
  37.     JsonLevel2 = cJSON_CreateString("zhang"); 
  38.     cJSON_AddItemToArray(JsonLevel1, JsonLevel2); 
  39.  
  40.     out=cJSON_Print(root); 
  41.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  42.     pszJsonContent[iJsonLen - 1] = '\0'; 
  43.  
  44.     cJSON_Delete(root); 
  45.     free(out); 
  46.  
  47.     return 0; 

6. 如果要實現如下JSON消息:

  1.     id:"123456", 
  2.     personname:[ 
  3.         "zhou", 
  4.         "zhang" 
  5.     ], 
  6.     personinfo:{ 
  7.         phonenumber:"15696192591", 
  8.         age:30 
  9.     } 

 則編寫C代碼函數如下:

  1. int MakeJsonIDPersonNameInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     cJSON *JsonLevel2  = NULL
  5.     char  *out         = NULL
  6.  
  7.     // 判斷函數參數是否合法 
  8.     if (pszJsonContent == NULL) 
  9.     { 
  10.         printf("MakeJsonIDPersonNameInfo: pszJsonContent is NULL!"); 
  11.  
  12.         return -1; 
  13.     } 
  14.  
  15.     root = cJSON_CreateObject(); 
  16.     if (NULL == root) 
  17.     { 
  18.         printf("MakeJsonIDPersonNameInfo: exec cJSON_CreateObject to get root failed!"); 
  19.  
  20.         return -1; 
  21.     } 
  22.  
  23.     cJSON_AddStringToObject(root, "id", "123456"); 
  24.  
  25.     JsonLevel1 = cJSON_CreateArray(); 
  26.     if (NULL == JsonLevel1) 
  27.     { 
  28.         printf("MakeJsonIDPersonNameInfo: exec cJSON_CreateArray to get JsonLevel1 failed 1!"); 
  29.  
  30.         cJSON_Delete(root); 
  31.         return -1; 
  32.     } 
  33.  
  34.     cJSON_AddItemToObject(root, "personname", JsonLevel1); 
  35.  
  36.     JsonLevel2 = cJSON_CreateString("zhou"); 
  37.     cJSON_AddItemToArray(JsonLevel1, JsonLevel2); 
  38.  
  39.     JsonLevel2 = cJSON_CreateString("zhang"); 
  40.     cJSON_AddItemToArray(JsonLevel1, JsonLevel2); 
  41.  
  42.     //----------------- 
  43.     JsonLevel1 = cJSON_CreateObject(); 
  44.     if(NULL == JsonLevel1) 
  45.     { 
  46.         printf("MakeJsonIDPersonNameInfo: exec cJSON_CreateObject to get JsonLevel1 failed 2!"); 
  47.  
  48.         cJSON_Delete(root); 
  49.         return -1; 
  50.     }    
  51.  
  52.     cJSON_AddStringToObject(JsonLevel1, "name", "zhou"); 
  53.  
  54.     cJSON_AddNumberToObject(JsonLevel1, "age", 30); 
  55.  
  56.     cJSON_AddItemToObject(root, "personinfo", JsonLevel1); 
  57.  
  58.     out=cJSON_Print(root); 
  59.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  60.     pszJsonContent[iJsonLen - 1] = '\0'; 
  61.  
  62.     cJSON_Delete(root); 
  63.     free(out); 
  64.  
  65.     return 0; 

7. 如果要實現如下JSON消息:

  1.     personinfo:{ 
  2.         personname:[ 
  3.         "zhou", 
  4.         "zhang" 
  5.         ], 
  6.         age:30 
  7.     } 

則編寫C代碼函數如下:

  1. int MakeJsonAgePersonNameInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     cJSON *JsonLevel2  = NULL
  5.     cJSON *JsonLevel3  = NULL
  6.     char  *out         = NULL
  7.  
  8.     // 判斷函數參數是否合法 
  9.     if (pszJsonContent == NULL) 
  10.     { 
  11.         printf("MakeJsonAgePersonNameInfo: pszJsonContent is NULL!"); 
  12.  
  13.         return -1; 
  14.     } 
  15.  
  16.     root = cJSON_CreateObject(); 
  17.     if (NULL == root) 
  18.     { 
  19.         printf("MakeJsonAgePersonNameInfo: exec cJSON_CreateObject to get root failed!"); 
  20.  
  21.         return -1; 
  22.     } 
  23.  
  24.     JsonLevel1 = cJSON_CreateObject(); 
  25.     if(NULL == JsonLevel1) 
  26.     { 
  27.         printf("MakeJsonAgePersonNameInfo: exec cJSON_CreateObject to get JsonLevel1 failed!"); 
  28.  
  29.         cJSON_Delete(root); 
  30.         return -1; 
  31.     }    
  32.  
  33.     cJSON_AddItemToObject(root, "personinfo", JsonLevel1); 
  34.  
  35.     //------------------ 
  36.     JsonLevel2 = cJSON_CreateArray(); 
  37.     if (NULL == JsonLevel2) 
  38.     { 
  39.         printf("MakeJsonAgePersonNameInfo: exec cJSON_CreateArray to get JsonLevel2 failed!"); 
  40.  
  41.         cJSON_Delete(root); 
  42.         return -1; 
  43.     } 
  44.  
  45.     cJSON_AddItemToObject(JsonLevel1, "personname", JsonLevel2); 
  46.  
  47.     JsonLevel3 = cJSON_CreateString("zhou"); 
  48.     cJSON_AddItemToArray(JsonLevel2, JsonLevel3); 
  49.  
  50.     JsonLevel3 = cJSON_CreateString("zhang"); 
  51.     cJSON_AddItemToArray(JsonLevel2, JsonLevel3); 
  52.  
  53.     //------------------ 
  54.     cJSON_AddNumberToObject(JsonLevel1, "age", 30); 
  55.  
  56.  
  57.     out=cJSON_Print(root); 
  58.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  59.     pszJsonContent[iJsonLen - 1] = '\0'; 
  60.  
  61.     cJSON_Delete(root); 
  62.     free(out); 
  63.  
  64.     return 0; 

8. 如果要實現如下JSON消息:

  1.     personinfo:[ 
  2.     { 
  3.         name:"zhou", 
  4.         age:30 
  5.     }, 
  6.     { 
  7.         name:"zhang", 
  8.         age:41 
  9.     } 
  10.     ] 

則編寫C代碼函數如下:

  1. int MakeJsonPersonsInfo(char *pszJsonContent, int iJsonLen) 
  2.     cJSON *root        = NULL
  3.     cJSON *JsonLevel1  = NULL
  4.     cJSON *JsonLevel2  = NULL
  5.     char  *out         = NULL
  6.  
  7.     // 判斷函數參數是否合法 
  8.     if (pszJsonContent == NULL) 
  9.     { 
  10.         printf("MakeJsonPersonsInfo: pszJsonContent is NULL!"); 
  11.  
  12.         return -1; 
  13.     } 
  14.  
  15.     root = cJSON_CreateObject(); 
  16.     if (NULL == root) 
  17.     { 
  18.         printf("MakeJsonPersonsInfo: exec cJSON_CreateObject to get root failed!"); 
  19.  
  20.         return -1; 
  21.     } 
  22.  
  23.     JsonLevel1 = cJSON_CreateArray(); 
  24.     if (NULL == JsonLevel1) 
  25.     { 
  26.         printf("MakeJsonPersonsInfo: exec cJSON_CreateArray to get JsonLevel1 failed!"); 
  27.  
  28.         cJSON_Delete(root); 
  29.         return -1; 
  30.     } 
  31.  
  32.     cJSON_AddItemToObject(root, "personinfo", JsonLevel1); 
  33.  
  34.     //--------------- 
  35.     JsonLevel2 = cJSON_CreateObject(); 
  36.     if(NULL == JsonLevel2) 
  37.     { 
  38.         printf("MakeJsonPersonsInfo: exec cJSON_CreateObject to get JsonLevel2 failed 1!"); 
  39.  
  40.         cJSON_Delete(root); 
  41.         return -1; 
  42.     }    
  43.  
  44.     cJSON_AddItemToArray(JsonLevel1, JsonLevel2); 
  45.  
  46.     cJSON_AddStringToObject(JsonLevel2, "name", "zhou"); 
  47.  
  48.     cJSON_AddNumberToObject(JsonLevel2, "age", 30); 
  49.  
  50.     //--------------- 
  51.     JsonLevel2 = cJSON_CreateObject(); 
  52.     if(NULL == JsonLevel2) 
  53.     { 
  54.         printf("MakeJsonPersonsInfo: exec cJSON_CreateObject to get JsonLevel2 failed 2!"); 
  55.  
  56.         cJSON_Delete(root); 
  57.         return -1; 
  58.     }    
  59.  
  60.     cJSON_AddItemToArray(JsonLevel1, JsonLevel2); 
  61.  
  62.     cJSON_AddStringToObject(JsonLevel2, "name", "zhang"); 
  63.  
  64.     cJSON_AddNumberToObject(JsonLevel2, "age", 41);      
  65.  
  66.     //--------------- 
  67.     out=cJSON_Print(root); 
  68.     strncpy(pszJsonContent, out, iJsonLen - 1); 
  69.     pszJsonContent[iJsonLen - 1] = '\0'; 
  70.  
  71.     cJSON_Delete(root); 
  72.     free(out); 
  73.  
  74.     return 0; 

總結 

以上是常見JSON消息的C代碼實現方法,大家可以編寫測試代碼來看最終生成的JSON消息是否是我們描述的那樣。我編寫了一個完整的測試代碼,放到了GitHub上,歡迎下載閱讀:https://github.com/zhouzxi/TestJson。(本測試程序是運行在Linux上的,大家可以使用這個命令進行編譯:

  1. gcc -g -o TestJson TestJson.c cJSON.c -pthread -lc -lm) 

【本文是51CTO專欄作者周兆熊的原創文章,作者微信公眾號:周氏邏輯(logiczhou)】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2020-07-20 07:56:28

JavaScript開發技術

2011-07-01 15:28:26

PhoneGap代碼示例

2019-07-16 08:38:34

JavaJson庫數據

2015-07-02 10:37:32

C#Json字符串類代碼

2010-01-06 17:06:05

Json格式

2009-08-27 15:53:30

C#中using wo

2016-12-20 11:12:11

C代碼自測開發

2023-11-12 11:56:28

Json格式弊端

2024-06-24 03:00:00

2024-06-18 08:37:25

場景異步編程代碼

2016-12-12 12:37:45

結構C代碼賦值

2010-02-05 10:23:09

C++基本函數

2009-08-17 17:36:08

C# 枚舉

2014-07-10 10:09:11

JSON數據行轉列

2009-07-03 17:44:06

JSP介紹

2009-09-01 16:49:56

C#文件上傳下載

2009-09-16 16:32:20

JavaScript靜

2010-02-03 10:05:48

C++ enum枚舉

2009-08-24 08:56:55

C#反射

2023-09-13 14:42:08

typedefC++
點贊
收藏

51CTO技術棧公眾號

韩国视频一区二区| av成人男女| 日本一区二区三区四区在线视频| 国产精品爽爽ⅴa在线观看| 五月天av网站| 欧美理论电影在线精品| 欧美主播一区二区三区美女| 激情视频小说图片| 欧美色视频免费| 国产在线精品一区二区夜色| 青青草成人在线| 欧美日韩免费做爰视频| 欧美女优在线视频| 日韩欧美中文字幕公布| 熟妇人妻无乱码中文字幕真矢织江| 男人的天堂在线视频免费观看 | 99精品视频免费版的特色功能| 爱搞国产精品| 亚洲日本在线看| 日韩av图片| 五月婷婷久久久| 老司机午夜精品| 欧美专区国产专区| www.av视频| 久久免费大视频| 亚洲欧洲日本专区| 99久久久无码国产精品性波多| 国产成人a视频高清在线观看| 亚洲成av人在线观看| 一区二区三区欧美在线| 精品成人一区二区三区免费视频| 国产99久久久精品| 国产日产亚洲精品| 亚洲中文一区二区| 野花国产精品入口| 欧美日本在线视频中文字字幕| 国产探花视频在线播放| 一本色道久久综合亚洲精品酒店 | 国产麻豆天美果冻无码视频| 清纯唯美激情亚洲| 欧美精品vⅰdeose4hd| 宅男噜噜噜66国产免费观看| 在线观看爽视频| 午夜精品久久久久久久99樱桃| 女同性恋一区二区| 韩国av网站在线| 国产精品久久久久影院色老大| 欧洲久久久久久| 内衣办公室在线| 91丝袜高跟美女视频| 国产乱码精品一区二区三区日韩精品 | 懂色av蜜桃av| 成人一级毛片| 最近2019年日本中文免费字幕 | 欧美一区二区三区久久精品茉莉花| 伊人久久久久久久久久| 男人的天堂官网| 欧美一站二站| 日韩中文字幕免费| 99热在线观看精品| 91tv官网精品成人亚洲| 欧美xxxx18性欧美| 欧产日产国产v| 国产精品s色| 久久久亚洲影院| 免费看日韩毛片| 六月婷婷一区| 国产精品视频免费观看www| 在线免费a视频| 久久97超碰色| 999视频在线观看| 人妻偷人精品一区二区三区| av电影在线观看一区| 久久综合毛片| 日本a级在线| 亚洲综合激情另类小说区| 成人免费在线网| 中文字幕在线直播| 欧美专区亚洲专区| a级大片免费看| 午夜视频在线观看精品中文| 欧美精品一区二区三区四区| 波多野结衣办公室33分钟| 日韩欧美网站| 欧美大片在线影院| 久久久久久91亚洲精品中文字幕| 蜜臀av性久久久久av蜜臀妖精| 亚洲综合色av| 日本高清中文字幕二区在线| 国产精品日韩成人| 日本一区午夜艳熟免费| 国产精品高清乱码在线观看 | 性高潮久久久久久久久久| 日本一区免费视频| 日韩a级黄色片| gogo久久| 欧美日韩大陆一区二区| 怡红院一区二区| 日韩综合精品| 97av在线播放| 国产情侣一区二区| 久久精品一区二区三区不卡| 2021狠狠干| 97精品国产99久久久久久免费| 日韩欧美中文字幕一区| jizz中文字幕| 一道本一区二区| 91午夜在线播放| 精品无吗乱吗av国产爱色| 亚洲综合成人网| 亚洲精品20p| 中国av一区| 欧美激情精品久久久久久久变态| 欧美另类高清videos的特点| 成人免费视频网站在线观看| 一个色的综合| 欧美片第1页| 欧美精品一区二区三区在线播放| 小早川怜子一区二区的演员表| 噜噜噜久久亚洲精品国产品小说| 91精品国产91久久久久青草| 欧美日韩欧美| 欧美性三三影院| 一级黄色片大全| 亚洲国产高清一区二区三区| 91色p视频在线| 9191在线| 欧美亚洲国产bt| 欧美做受xxxxxⅹ性视频| 一区免费视频| 亚洲一区二区三区在线视频| 一区二区三区视频网站 | 亚洲图片小说视频| 国产亚洲欧美激情| 国产亚洲天堂网| 嫩草国产精品入口| 久久人人97超碰精品888| 精品国产av 无码一区二区三区 | 国产精品一区二区三区四区| 伊人久久99| 日日狠狠久久| 日韩在线观看免费全| 中文字幕+乱码+中文字幕明步| 久久久久久久综合日本| 亚洲午夜无码av毛片久久| 久久久亚洲欧洲日产| 久久久免费电影| 四虎精品一区二区三区| 亚洲va欧美va天堂v国产综合| 中文字幕在线视频一区二区| 综合天堂av久久久久久久| 成人黄色大片在线免费观看| 免费大片在线观看www| 欧美日韩国产天堂| 欧美一区二区三区观看| 国产在线播放一区| 男人天堂新网址| 国产成人福利av| 69国产精品成人在线播放| 日韩美女一级视频| 在线免费精品视频| 香蕉久久久久久久| 国产一区二区不卡在线| 日韩一级性生活片| 最新精品国偷自产在线| 国产精品美女主播在线观看纯欲| av在线之家电影网站| 欧美人与z0zoxxxx视频| 青青草原免费观看| av在线一区二区| 欧美自拍小视频| 亚欧美无遮挡hd高清在线视频| 成人综合电影| 中文字幕在线直播| 日韩视频免费看| 国产成人久久精品77777综合| 香蕉成人伊视频在线观看| 中文字幕一区二区三区人妻不卡| 蜜臀av在线播放一区二区三区 | 性xxxfreexxxx性欧美| 精品88久久久久88久久久| 国产www在线| 国产精品久久99| 中文字幕视频观看| 日日摸夜夜添夜夜添国产精品 | 日本理论片午伦夜理片在线观看| 亚洲国内精品在线| 中日韩av在线| 亚洲第一激情av| 亚洲精品国产精品国自| 国产不卡视频一区| 久久精品香蕉视频| 欧美aⅴ99久久黑人专区| 久久久99国产精品免费| 91嫩草国产线观看亚洲一区二区| 91精品国产91久久久久久不卡| eeuss影院在线播放| 精品少妇一区二区三区免费观看| 国产又大又黄视频| 亚洲激情自拍偷拍| 摸摸摸bbb毛毛毛片| 成人激情综合网站| www.超碰97.com| 中文久久精品| wwwjizzjizzcom| 欧美精品系列| 精品综合久久| 亚洲网址在线观看| 国产日韩欧美日韩| 日韩电影av| 国模吧一区二区| 在线不卡日本v二区707| 亚洲香蕉av在线一区二区三区| 成人久久久精品国产乱码一区二区| 欧洲精品在线观看| 成人免费区一区二区三区| 亚洲男同1069视频| 免费黄色国产视频| 久久欧美一区二区| 蜜臀av粉嫩av懂色av| 国产一区二区三区精品视频| 亚洲欧美自拍另类日韩| 久久综合中文| 国产极品在线视频| 欧美精品首页| 国产树林野战在线播放| 成人免费电影网址| 欧美一区二区在线| 香蕉久久夜色精品国产更新时间 | 视频一区二区免费| 日韩欧美一级精品久久| 夜夜躁狠狠躁日日躁av| 91久久国产最好的精华液| 久久艹免费视频| 性感美女极品91精品| 日本中文字幕免费| 亚洲一区二区三区四区中文字幕| 国内偷拍精品视频| 亚洲免费电影在线| 全程偷拍露脸中年夫妇| 自拍偷在线精品自拍偷无码专区| 国产精品69久久久久孕妇欧美| 国产日韩精品一区二区浪潮av| www.av欧美| 久久精品视频免费| 麻豆精品免费视频| 久久精品在线观看| 永久免费观看片现看| 国产精品日韩精品欧美在线| 免费一级suv好看的国产网站| 国产精品国产三级国产有无不卡| 久久成人小视频| 亚洲激情在线播放| 欧美精品xxxxx| 亚洲mv大片欧洲mv大片精品| 日韩乱码人妻无码中文字幕| 激情久久av一区av二区av三区| 女人十八岁毛片| 一本色道a无线码一区v| 国产精品欧美综合| 欧美日本乱大交xxxxx| 精品人妻少妇嫩草av无码专区| 日韩美一区二区三区| 人妻一区二区三区| 亚洲精品资源在线| 第一页在线观看| 久久久999精品视频| 国产精品186在线观看在线播放| 91精品国产91久久久久久吃药 | 国产精品香蕉视屏| 日韩激情网站| 亚洲电影一二三区| 欧美在线影院| 欧美三级在线观看视频| 日韩精品一卡二卡三卡四卡无卡| 亚洲欧美日韩综合网| 国产精品99久久久久久久女警| 国产精品无码在线| 欧美国产1区2区| 久久黄色免费视频| 日韩欧美亚洲成人| 国产美女主播在线观看| 亚洲高清久久网| 9色在线观看| 欧美激情免费看| 欧美日韩尤物久久| 97夜夜澡人人双人人人喊| 蜜桃精品wwwmitaows| 国产成年人在线观看| av不卡在线看| 国产免费中文字幕| 91香蕉视频污在线| 日韩精品123区| 欧美日韩国产精品一区| 国产精品高潮呻吟AV无码| 亚洲国产古装精品网站| 日本在线视频观看| 91极品视频在线| 日韩城人网站| 欧美日本国产精品| 欧美精品一级| 色噜噜狠狠一区二区| jlzzjlzz亚洲日本少妇| 911国产在线| 色国产综合视频| 刘亦菲久久免费一区二区| www国产91| www成人在线视频| 国产伦精品一区二区三区照片91| 99久久精品网站| 亚洲人成无码www久久久| 丁香婷婷综合网| 婷婷社区五月天| 欧美在线免费播放| 色欲av伊人久久大香线蕉影院| 美乳少妇欧美精品| 懂色aⅴ精品一区二区三区| 国产免费一区二区三区| 午夜av一区| 国产又黄又猛又粗又爽的视频| 成人白浆超碰人人人人| 日韩在线观看视频一区二区| 欧美性猛交一区二区三区精品| 天堂av在线播放| 国语自产精品视频在线看抢先版图片| 成人在线分类| 伊人久久大香线蕉av一区| 欧美96一区二区免费视频| wwwwxxxx国产| 狠狠综合久久av一区二区小说 | 日韩精品中文字幕吗一区二区| 亚洲黄色一区二区三区| 久久高清国产| 法国伦理少妇愉情| 狠狠躁夜夜躁久久躁别揉| 色婷婷av一区二区三| 97国产精品人人爽人人做| 51vv免费精品视频一区二区| 久久综合亚洲精品| 国产精品原创巨作av| 精品无码久久久久成人漫画| 制服丝袜亚洲精品中文字幕| 免费网站免费进入在线| 91久久精品国产91性色| 天天做天天爱天天爽综合网| www.cao超碰| 亚洲色图视频免费播放| 国产免费av电影| 欧美乱人伦中文字幕在线| 无人区乱码一区二区三区| 国产精品入口芒果| 成人黄色一级视频| 日本视频免费在线| 日韩激情av在线播放| 欧美电影免费观看| 日韩在线第一区| 久久国产欧美日韩精品| 91嫩草|国产丨精品入口| 欧美岛国在线观看| 波多野结衣在线观看| 欧美日本韩国一区二区三区| 男女激情视频一区| 老妇女50岁三级| 亚洲精品国产综合久久| 国产综合色区在线观看| 亚洲在线观看一区| 国产成人一级电影| 毛片基地在线观看| 在线看日韩欧美| 清纯唯美激情亚洲| 国产免费黄色一级片| 久久精品一区四区| 精品国产乱码一区二区三| 97人人爽人人喊人人模波多| 狠狠做六月爱婷婷综合aⅴ| 午夜一区二区视频| 亚洲国产精品尤物yw在线观看| 国产在线观看网站| 91久久精品国产91性色| 99亚洲视频| 欧美a级片免费看| 亚洲国产精品高清久久久| 久久亚洲精品爱爱| 日韩视频 中文字幕| 91老师片黄在线观看| 国产一区二区三区四区视频| 久久久视频在线| 久久蜜桃av| 久久国产精品影院| 777午夜精品视频在线播放| 毛片电影在线| 椎名由奈jux491在线播放| 99精品视频中文字幕| 在线观看国产成人| **欧美日韩vr在线| 午夜国产一区二区| 亚洲综合色一区| 亚洲成人教育av| 国产999精品在线观看| 欧美成人精品欧美一级乱|