精品欧美一区二区三区在线观看 _久久久久国色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电影免费在线观看| 最近国语视频在线观看免费播放| 偷偷www综合久久久久久久| 欧美一区二区三区公司| 欧美女人性生活视频| 色老头视频在线观看| 高清成人免费视频| 国产精品夫妻激情| 免费中文字幕在线观看| 精品视频99| 精品国产乱码久久久久久久久| 丝袜老师办公室里做好紧好爽 | 91视频免费播放| 国产精品一区二区三区免费视频| 久久久99精品| 日韩久久综合| 亚洲精品久久久久久久久久久| 国产视频1区2区3区| 9lporm自拍视频区在线| 国产精品久久福利| 久久综合一区| 男人天堂综合网| 精品无人码麻豆乱码1区2区| 欧美在线一级va免费观看| 精品欧美一区二区久久久久| 精品国产乱码久久久久久果冻传媒 | 99re这里都是精品| 亚洲一区中文字幕| 中文字幕免费观看视频| 国产日韩视频| 欧美国产视频一区二区| 黑人操日本美女| 欧美日韩水蜜桃| 亚洲黄色免费三级| 手机av在线网站| 懂色aⅴ精品一区二区三区| 亚洲成在线观看| 国产精品免费看久久久无码| 日本福利专区在线观看| 国产无遮挡一区二区三区毛片日本| 国产精品自拍首页| 亚洲a视频在线观看| 国产一区二区伦理| 国产专区精品视频| 探花国产精品一区二区| 久久久噜噜噜| 欧美在线视频免费| 日本一区二区欧美| 黄色av日韩| 欧美国产视频日韩| 国产一级二级三级视频| 亚洲特色特黄| 久久露脸国产精品| 日本少妇毛茸茸高潮| 精久久久久久| 午夜精品福利电影| 日韩xxx高潮hd| 亚洲欧美网站| 日韩av第一页| 精品成人无码久久久久久| 久久国产欧美| 国产精品青青在线观看爽香蕉| 人人爽人人爽人人片av| 日韩av不卡一区二区| 国产精品丝袜白浆摸在线| 久草热在线观看| 久久精品av麻豆的观看方式| 成人国产精品一区| 国产高清第一页| 国产91精品露脸国语对白| 成人av免费在线看| 亚洲av成人无码久久精品老人| 2014亚洲片线观看视频免费| 日韩亚洲视频| 成人在线播放| 午夜精品福利久久久| 国产 福利 在线| 91大神在线观看线路一区| 制服丝袜中文字幕亚洲| 美女又黄又免费的视频| 青青草久久爱| 国产一区二区三区在线看 | 视频在线不卡| 国产三级欧美三级| 麻豆md0077饥渴少妇| 任你弄在线视频免费观看| 午夜精品爽啪视频| 亚洲最大综合网| 视频精品一区| 亚洲人成在线一二| 四虎精品免费视频| 国产一区二区你懂的| 国产精品入口免费视频一| 国产精品无码免费播放| 99免费精品视频| 亚洲日本无吗高清不卡| 免费毛片在线看片免费丝瓜视频| 日韩欧美在线视频观看| 日本精品一区在线| 欧美黑白配在线| 日韩在线视频免费观看高清中文| 精品午夜福利视频| 美女精品自拍一二三四| 国内精品二区| 男人在线资源站| 欧美网站在线观看| 天天色天天干天天色| 外国成人在线视频| 欧美精品在线播放| 成人小视频在线播放| 国产精品主播直播| 神马影院我不卡午夜| h片在线观看视频免费免费| 欧美日韩国产一级| 亚洲黄色在线网站| 欧美精品aa| 国产欧美欧洲在线观看| 深夜福利在线视频| 一区二区三区免费观看| 日日干日日操日日射| 九九精品在线| 97av在线视频免费播放| a级片在线视频| 国产精品三级久久久久三级| 国产99久久九九精品无码| 精品国产第一国产综合精品| 在线观看成人黄色| 久久久久久91亚洲精品中文字幕| 国产999精品久久| 中国一级大黄大黄大色毛片| 99re久久| 中文字幕久久久| 免费看日批视频| caoporm超碰国产精品| 996这里只有精品| 麻豆视频久久| 美女久久久久久久久久久| 一级黄色片网站| 国产精品水嫩水嫩| 少妇一级淫免费放| 日本女优一区| 国产一区二区香蕉| 日韩伦理在线电影| 欧美日韩国产经典色站一区二区三区 | 2020国产成人综合网| heyzo亚洲| 欧洲亚洲视频| 91福利视频网| 三级视频网站在线| 日韩欧美高清视频| 在哪里可以看毛片| 男人天堂欧美日韩| 欧美一区二区三区在线免费观看 | 91网免费观看| 欧洲在线视频| 亚洲国产精彩中文乱码av在线播放| 中文字幕手机在线观看| 国产精品亚洲人在线观看| 麻豆传媒网站在线观看| 中文字幕一区二区三区四区久久 | 成人午夜在线视频| 成人在线国产视频| 国产区精品视频在线观看豆花| 久久久久久伊人| 深夜福利视频一区| 色av成人天堂桃色av| 欧美 日韩 成人| 久久电影网站中文字幕| 麻豆映画在线观看| 成人中文字幕视频| 911国产网站尤物在线观看| 日本福利片高清在线观看| 色老汉av一区二区三区| 少妇高潮在线观看| 成人永久免费视频| 男人透女人免费视频| 久久看人人摘| 高清不卡日本v二区在线| 东京一区二区| 久久久精品国产| 天天干天天草天天射| 欧美影视一区在线| 激情四射综合网| 久久精品视频免费观看| 在线免费黄色小视频| 国产一区91| 亚洲国产高清国产精品| 88久久精品| 国产精品电影在线观看| 青青青草视频在线| 伊人青青综合网站| 国产成人无码www免费视频播放| 在线亚洲一区观看| 黄色小视频在线免费看| 国产精品天干天干在线综合| 国产草草浮力影院| 久久99热狠狠色一区二区| 久久久性生活视频| 国产精品videosex性欧美| 国产一区在线免费| 国色天香久久精品国产一区| 日本道色综合久久影院| 日韩特级毛片| 一区二区三区在线播放欧美| 精品人妻一区二区三区蜜桃| 一区二区三区成人| 天天躁日日躁aaaa视频| 丝袜亚洲精品中文字幕一区| 17c丨国产丨精品视频| 亚洲激情播播| 97在线电影| 免费成人黄色网| 久久久久日韩精品久久久男男| 青梅竹马是消防员在线| 欧美一卡二卡三卡四卡| 中文字幕无码乱码人妻日韩精品| 一区二区三区日韩| 91激情视频在线观看| 国产成人av福利| 亚洲一区二区中文字幕在线观看| 99精品国产在热久久下载| 亚洲一区二区在线看| 国产精品22p| 国产99在线免费| 精品女同一区二区三区在线观看| 日本精品久久久| www.综合| 欧美激情视频在线| 免费大片黄在线| 国产午夜精品久久久 | 日本黑人久久| 猫咪成人在线观看| 91久久久久久久久久| 色综合视频一区二区三区44| 日韩av观看网址| 77thz桃花论族在线观看| 久久久成人精品视频| 午夜在线视频| 亚洲人成伊人成综合网久久久| 亚洲国产成人精品一区二区三区| 欧美精品久久天天躁| 日本中文字幕在线观看视频| 精品久久久久久久久久ntr影视| 欧美一区二区三区爽爽爽| 综合在线观看色| 亚洲а∨天堂久久精品2021| av激情综合网| 韩国三级hd两男一女| 成人免费高清视频| 黑人巨大猛交丰满少妇| 久久精品国产免费看久久精品| 欧美激情第3页| 国产原创一区二区三区| 亚洲午夜激情影院| 国产一区二区三区综合| 中文字幕资源在线观看| 久久国产精品一区二区| 亚洲高清在线免费观看| 丝袜亚洲另类欧美| 中文字幕第36页| 青青草视频一区| 亚洲高清在线不卡| 国产精品影视网| 中文字幕无码毛片免费看| jlzzjlzz亚洲日本少妇| 极品白嫩丰满美女无套| 91视视频在线观看入口直接观看www | 久久久久久一区| 天天躁日日躁狠狠躁欧美巨大小说| 国内精品久久国产| 高潮按摩久久久久久av免费| 久久久久久久久久久一区 | 精品一区二区三区四区| 深夜福利免费在线观看| 日韩在线观看你懂的| 在线heyzo| 午夜免费日韩视频| 欧美成人app| 亚洲www在线| 国产精品传媒| 97久久天天综合色天天综合色hd| 日本精品影院| 亚洲精品日韩在线观看| 中文精品电影| 成人羞羞国产免费网站| 青青草97国产精品免费观看 | 亚洲国产日韩一区| 久久天堂电影| 久久成人精品电影| 9999在线视频| 国产精品久久久精品| 成人精品电影在线| 91中文字精品一区二区| 日韩aaa久久蜜桃av| 亚洲激情一区二区三区| 一区在线免费| 男女男精品视频站| 99久久精品一区二区| www.97视频| 色综合色狠狠综合色| 成人高潮片免费视频| 亚洲视频在线观看视频| av激情在线| 日韩av大片免费看| 国偷自产av一区二区三区| 日本不卡一区二区三区视频| 伊人影院久久| 蜜臀一区二区三区精品免费视频 | zjzjzjzjzj亚洲女人| 国产欧美日韩三级| 久草视频免费在线| 色婷婷久久一区二区三区麻豆| 99国产精品99| 亚洲性av网站| 亚洲第一av| 亚洲综合自拍一区| 精品免费视频| 精品人妻一区二区三区四区在线 | 亚洲视频天天射| av不卡在线观看| 国产亚洲欧美精品久久久久久| 91福利在线免费观看| av中文字幕在线免费观看| 上原亚衣av一区二区三区| 天堂资源在线| 97视频中文字幕| 中文字幕亚洲精品乱码| 午夜激情福利在线| 91丨九色丨国产丨porny| 免费毛片在线播放免费| 欧美图片一区二区三区| 性xxxx18| 日本久久91av| 欧美亚洲tv| 草草视频在线免费观看| 成a人片亚洲日本久久| 免费国产羞羞网站美图| 欧美日韩一区在线观看| av天在线观看| 国产精品69久久久久| 草莓视频一区二区三区| www成人免费| 国产精品一区二区在线观看不卡| 永久免费av无码网站性色av| 欧美午夜精品理论片a级按摩| 青青操视频在线| 午夜精品蜜臀一区二区三区免费 | 欧美日高清视频| 国产综合在线观看| 国产精品视频色| 日韩在线视频精品| 777视频在线| 国产精品乱人伦| 在线观看免费中文字幕| 中文字幕精品久久| 九九九精品视频| 亚洲一区综合| 国产综合久久久久影院| 老司机深夜福利网站| 欧美久久久久免费| 男人天堂久久久| 成人免费网站在线| 91成人观看| 欧美肉大捧一进一出免费视频| 亚洲成人自拍一区| 国产精品探花视频| 欧美成在线观看| 97青娱国产盛宴精品视频| 搞av.com| 久久看人人爽人人| 国产一级精品视频| 国产一区二区免费| 日本免费一区二区三区等视频| 国产成人免费高清视频| 国产成人精品三级| 欧美成人三级在线观看| 精品一区二区三区四区| 粉嫩91精品久久久久久久99蜜桃| 日韩精品第1页| 成人aa视频在线观看| 免费看污视频的网站| 久久91精品国产91久久跳| 北条麻妃一区二区三区在线观看 | 久久久久国产精品午夜一区| 中国女人特级毛片| 9191成人精品久久| 日韩激情电影| 亚洲巨乳在线观看| 韩国成人精品a∨在线观看| 久久久久久久久99| 国产丝袜一区二区三区免费视频| 成人在线视频区| www在线观看免费| 欧美高清在线一区| 少妇精品高潮欲妇又嫩中文字幕| 国产91九色视频| 欧美日韩网址| 黄色aaa视频|