国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

C/C++ 關(guān)于 cJson 庫(kù)的使用

共 17676字,需瀏覽 36分鐘

 ·

2021-09-08 10:16

關(guān)于 Json 這種數(shù)據(jù)格式,在前面已經(jīng)做了詳細(xì)的介紹 Json 的格式和用途,在項(xiàng)目開(kāi)發(fā)過(guò)程中我們需要針對(duì)不同的語(yǔ)言使用不同的庫(kù)對(duì) Json 格式的數(shù)據(jù)進(jìn)行解析,下面給大家介紹一個(gè)基于 C 語(yǔ)言的 Json 庫(kù) – cJson。cJSON 是一個(gè)超輕巧,攜帶方便,單文件,簡(jiǎn)單的可以作為 ANSI-C 標(biāo)準(zhǔn)的 JSON 解析器。

cJSON 是一個(gè)開(kāi)源項(xiàng)目,github 下載地址:

https://github.com/DaveGamble/cJSON

cJSON,目前來(lái)說(shuō),主要的文件有兩個(gè),一個(gè) cJSON.c 一個(gè) cJSON.h。使用的時(shí)候,將頭文件 include 進(jìn)去即可。

如果是在 Linux 操作系統(tǒng)中使用,編譯 到時(shí)候需要添加數(shù)學(xué)庫(kù) libm.so,如下所示:

gcc  *.c  cJSON.c  -lm

1. cJSON 結(jié)構(gòu)體

cJSON.h 中定義了一個(gè)非常重要的結(jié)構(gòu)體 cJSON,想要熟悉使用 cJSON 庫(kù)函數(shù)可從 cJSON 結(jié)構(gòu)體入手,cJSON 結(jié)構(gòu)體如下所示:

typedef struct cJSON {  
     struct cJSON *next,*prev;   
     struct cJSON *child;   
     int type;   
     char *valuestring;        // value值是字符串類型
     int valueint;  
     double valuedouble;   
     char *string;             // 對(duì)象中的key
} cJSON; 

關(guān)于這個(gè)結(jié)構(gòu)體做如下幾點(diǎn)的說(shuō)明:

  1. cJOSN 結(jié)構(gòu)體是一個(gè)雙向鏈表,并且可通過(guò) child 指針訪問(wèn)下一層。
  2. 結(jié)構(gòu)體成員 type 變量用于描述數(shù)據(jù)元素的類型(如果是鍵值對(duì)表示 value 值的類型),數(shù)據(jù)元素可以是字符串可以是整形,也可以是浮點(diǎn)型。
  • 如果是整形值的話可通過(guò) valueint 將值取出
  • 如果是浮點(diǎn)型的話可通過(guò) valuedouble 將值取出
  • 如果是字符串類型的話可通過(guò) valuestring 將值取出
  1. 結(jié)構(gòu)體成員 string 表示鍵值對(duì)中鍵值的名稱。

cJSON 作為 Json 格式的解析庫(kù),其主要功能就是構(gòu)建和解析 Json 格式了,比如要發(fā)送數(shù)據(jù):用途就是發(fā)送端將要發(fā)送的數(shù)據(jù)以 json 形式封裝,然后發(fā)送,接收端收到此數(shù)據(jù)后,還是按 json 形式解析,就得到想要的數(shù)據(jù)了。

2. cJson API

Json 格式的數(shù)據(jù)無(wú)外乎有兩種 Json對(duì)象和 Json數(shù)組,創(chuàng)建的 Json 數(shù)據(jù)串可能是二者中 的一種,也可能是二者的組合,不管哪一種通過(guò)調(diào)用相關(guān)的 API 函數(shù)都可以輕松的做到這一點(diǎn)。

2.1 數(shù)據(jù)的封裝

cJSON.h 頭文件中可以看到一些函數(shù)聲明,通過(guò)調(diào)用這些創(chuàng)建函數(shù)就可以將 Json 支持的數(shù)據(jù)類型封裝為 cJSON 結(jié)構(gòu)體類型:

// 空值類型
extern cJSON *cJSON_CreateNull(void);
// 布爾類型
extern cJSON *cJSON_CreateTrue(void);
extern cJSON *cJSON_CreateFalse(void);
extern cJSON *cJSON_CreateBool(int b);
// 數(shù)值類型
extern cJSON *cJSON_CreateNumber(double num);
// 字符串類型
extern cJSON *cJSON_CreateString(const char *string);
// json數(shù)組(創(chuàng)建空數(shù)組)
extern cJSON *cJSON_CreateArray(void);
// json對(duì)象(創(chuàng)建空對(duì)象)
extern cJSON *cJSON_CreateObject(void);

另外,cJson 庫(kù)中還給我我們提供了一些更為簡(jiǎn)便的操作函數(shù),在創(chuàng)建數(shù)組的同時(shí)還可以進(jìn)行初始化

// 創(chuàng)建一個(gè)Json數(shù)組, 元素為整形
extern cJSON *cJSON_CreateIntArray(const int *numbers,int count);
// 創(chuàng)建一個(gè)Json數(shù)組, 元素為浮點(diǎn)
extern cJSON *cJSON_CreateFloatArray(const float *numbers,int count);
extern cJSON *cJSON_CreateDoubleArray(const double *numbers,int count);
// 創(chuàng)建一個(gè)Json數(shù)組, 元素為字符串類型
extern cJSON *cJSON_CreateStringArray(const char **strings,int count);

2.2 Json 對(duì)象操作

當(dāng)?shù)玫揭粋€(gè) Json 對(duì)象之后,就可以往對(duì)象中添加鍵值對(duì)了,可以使用 cJSON_AddItemToObject()

extern void cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);

在 cJSON 庫(kù)中節(jié)點(diǎn)的從屬關(guān)系是通過(guò)樹(shù)來(lái)維護(hù)的,每一層節(jié)點(diǎn)都是通過(guò)鏈表來(lái)維護(hù)的,這樣就能分析出該函數(shù)參數(shù)的含義:

  • object:要添加的鍵值對(duì)從屬于那個(gè)節(jié)點(diǎn)
  • string:添加的鍵值對(duì)的鍵值
  • item:添加的鍵值對(duì)的 value 值(需要先將其封裝為 cJSON 類型的結(jié)構(gòu)體)

為了讓我的操作更加方便,cJson 庫(kù)還給我們提供了一些宏函數(shù),方便我們快速的往 Json 對(duì)象中添加鍵值對(duì)

#define cJSON_AddNullToObject(object,name)      cJSON_AddItemToObject(object, name, cJSON_CreateNull())
#define cJSON_AddTrueToObject(object,name)      cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
#define cJSON_AddFalseToObject(object,name)     cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
#define cJSON_AddBoolToObject(object,name,b)    cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
#define cJSON_AddNumberToObject(object,name,n)  cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
#define cJSON_AddStringToObject(object,name,s)  cJSON_AddItemToObject(object, name, cJSON_CreateString(s))

我們還可以根據(jù) Json 對(duì)象中的鍵值取出相應(yīng)的 value 值,API 函數(shù)原型如下:

extern cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);

2.3 Json 數(shù)組操作

添加數(shù)據(jù)到 Json 數(shù)組中(原始數(shù)據(jù)需要先轉(zhuǎn)換為 cJSON 結(jié)構(gòu)體類型)

extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);

得到 Json 數(shù)組中元素的個(gè)數(shù):

extern int cJSON_GetArraySize(cJSON *array);

得到 Json 數(shù)組中指定位置的原素,如果返回 NULL 表示取值失敗了。

extern cJSON *cJSON_GetArrayItem(cJSON *array,int item);

2.4 序列化

序列化就是將 Json 格式的數(shù)據(jù)轉(zhuǎn)換為字符串的過(guò)程,cJson 庫(kù)中給我們提供了 3 個(gè)轉(zhuǎn)換函數(shù),具體如下:

第一個(gè)參數(shù) item 表示 Json 數(shù)據(jù)塊的根節(jié)點(diǎn)。

extern char  *cJSON_Print(cJSON *item);
extern char  *cJSON_PrintUnformatted(cJSON *item);
extern char *cJSON_PrintBuffered(cJSON *item,int prebuffer,int fmt);
  • 調(diào)用 cJSON_Print() 函數(shù)我們可以得到一個(gè)帶格式的 Json 字符串(有換行,看起來(lái)更直觀)
  • 調(diào)用 cJSON_PrintUnformatted() 函數(shù)會(huì)得到一個(gè)沒(méi)有格式的 Json 字符串(沒(méi)有換行,所有的數(shù)據(jù)都在同一行)。
  • 調(diào)用 cJSON_PrintBuffered() 函數(shù)使用緩沖策略將 Json 實(shí)體轉(zhuǎn)換為字符串,參數(shù) prebuffer 是指定緩沖區(qū)的大小,參數(shù) fmt==0 表示未格式化,fmt==1 表示格式化。

我們?cè)诰幋a過(guò)程中可以根據(jù)自己的實(shí)際需求調(diào)用相關(guān)的操作函數(shù)得到對(duì)應(yīng)格式的 Json 字符串。

2.5 Json 字符串的解析

如果我們得到了一個(gè) Json 格式的字符串,想要讀出里邊的數(shù)據(jù),就需要對(duì)這個(gè)字符串進(jìn)行解析,處理方式就是將字符串轉(zhuǎn)換為 cJSON 結(jié)構(gòu)體,然后再基于這個(gè)結(jié)構(gòu)體讀里邊的原始數(shù)據(jù),轉(zhuǎn)換函數(shù)的函數(shù)原型如下:

extern cJSON *cJSON_Parse(const char *value);

2.6 內(nèi)存釋放

當(dāng)我們將數(shù)據(jù)封裝為 cJSON 結(jié)構(gòu)類型的節(jié)點(diǎn)之后都會(huì)得到一塊堆內(nèi)存,當(dāng)我們釋放某個(gè)節(jié)點(diǎn)的時(shí)候可以調(diào)用 cJson 庫(kù)提供的刪除函數(shù) cJSON_Delete(),函數(shù)原型如下:

extern void   cJSON_Delete(cJSON *c);

該函數(shù)的參數(shù)為要釋放的節(jié)點(diǎn)的地址,在此強(qiáng)調(diào)一點(diǎn):在進(jìn)行內(nèi)存地址釋放的時(shí)候,當(dāng)前節(jié)點(diǎn)以及其子節(jié)點(diǎn)都會(huì)被刪除。

3. Json 數(shù)據(jù)的封裝

3.1 Json 對(duì)象操作舉例

創(chuàng)建一個(gè)對(duì)象,并向這個(gè)對(duì)象里添加字符串和整型鍵值:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"cJSON.h"
 
int main()
{
    cJSON * root;
    cJSON *arry;

    root=cJSON_CreateObject();                     // 創(chuàng)建根數(shù)據(jù)對(duì)象
    cJSON_AddStringToObject(root,"name","luffy");  // 添加鍵值對(duì)
    cJSON_AddStringToObject(root,"sex","man");     // 添加鍵值對(duì)
    cJSON_AddNumberToObject(root,"age",19);        // 添加鍵值對(duì)

    char *out = cJSON_Print(root);   // 將json形式轉(zhuǎn)換成字符串
    printf("%s\n",out);

    // 釋放內(nèi)存  
    cJSON_Delete(root);  
    free(out);        
}

運(yùn)行結(jié)果

{
 "name""luffy",
 "sex""man",
 "age": 19
}

若干說(shuō)明:

  • cJSON_CreateObject 函數(shù)可創(chuàng)建一個(gè)根對(duì)象,返回的是一個(gè) cJSON 指針,在這個(gè)指針用完了以后,需要手動(dòng)調(diào)用 cJSON_Delete(root) 進(jìn)行內(nèi)存回收。
  • 函數(shù) cJSON_Print() 內(nèi)部封裝了 malloc 函數(shù),所以需要使用 free() 函數(shù)釋放被 out 占用的內(nèi)存空間。

3.2 Json 數(shù)組操作舉例

創(chuàng)建一個(gè)數(shù)組,并向數(shù)組添加一個(gè)字符串和一個(gè)數(shù)字

int main(int argc, char **argv)
{
    cJSON *root;
    root = cJSON_CreateArray();
    cJSON_AddItemToArray(root, cJSON_CreateString("Hello world"));
    cJSON_AddItemToArray(root, cJSON_CreateNumber(10)); 
    // char *s = cJSON_Print(root);
    char *s = cJSON_PrintUnformatted(root);
    if(s)
    {
        printf(" %s \n",s);
        free(s);
    }
    cJSON_Delete(root);
    return 0;
}

運(yùn)行結(jié)果:

["Hello world",10]

3.3 Json 對(duì)象、數(shù)組嵌套使用

對(duì)象里面包括一個(gè)數(shù)組,數(shù)組里面包括對(duì)象,對(duì)象里面再添加一個(gè)字符串和一個(gè)數(shù)字

{
    "person":[{
        "name":"luffy",
        "age":19
    }]
}

示例代碼:

int main(int argc, char **argv)
{
    cJSON *root, *body, *list;
    // josn 對(duì)象 root
    root = cJSON_CreateObject();
    // root 添加鍵值對(duì) person:json數(shù)組A
    cJSON_AddItemToObject(root,"person", body = cJSON_CreateArray());
    // json數(shù)組A 添加Json對(duì)象B
    cJSON_AddItemToArray(body, list = cJSON_CreateObject());
    // 在json對(duì)象B中添加鍵值對(duì): "name":"luffy"
    cJSON_AddStringToObject(list,"name","luffy");
    // 在json對(duì)象B中添加鍵值對(duì): "age":19
    cJSON_AddNumberToObject(list,"age",19);
 
    // char *s = cJSON_Print(root);
    char *s = cJSON_PrintUnformatted(root);
    if(s)
    {
        printf(" %s \n",s);
        free(s);
    }
    if(root)
    {
        cJSON_Delete(root); 
    }
    return 0;
}

運(yùn)行結(jié)果:

{"person":[{"name":"luffy","age":19}]}

4. 解析 Json 字符串

4.1 解析 Json 對(duì)象

Json 字符串的解析流程和數(shù)據(jù)的封裝流程相反,假設(shè)我們有這樣一個(gè) Json 字符串(字符串中的雙引號(hào)需要通過(guò)轉(zhuǎn)義字符將其轉(zhuǎn)譯為普通字符):

{\"name\":\"luffy\",\"sex\":\"man\",\"age\":19}

示例代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
 
int main()
{
    cJSON *json, *name, *sex, *age;
    char* out="{\"name\":\"luffy\",\"sex\":\"man\",\"age\":19}";
 
    json = cJSON_Parse(out); //解析成json形式
    name = cJSON_GetObjectItem(json, "name");  //獲取鍵值內(nèi)容
    sex = cJSON_GetObjectItem(json, "sex");
    age = cJSON_GetObjectItem(json, "age");
 
    printf("name:%s,sex:%s,age:%d\n", name->valuestring, sex->valuestring, age->valueint);
 
    cJSON_Delete(json);  //釋放內(nèi)存 
}

輸出的結(jié)果:

name:luffy,sex:man,age:19

如果是在嚴(yán)格的場(chǎng)所,應(yīng)該先判定每個(gè) item 的 type,然后再考慮去取值。

4.2 解析嵌套的 Json 對(duì)象

加大一點(diǎn)難度,下面我們解析一個(gè)嵌套的 Json 對(duì)象,數(shù)據(jù)如下:

{\"list\":{\"name\":\"luffy\",\"age\":19},\"other\":{\"name\":\"ace\"}}
int main()
{
    char *s = "{\"list\":{\"name\":\"luffy\",\"age\":19},\"other\":{\"name\":\"ace\"}}";
    cJSON *root = cJSON_Parse(s);
    if(!root) 
    {
        printf("get root faild !\n");
        return -1;
    }

    cJSON *js_list = cJSON_GetObjectItem(root, "list");
    if(!js_list) 
    {
        printf("no list!\n");
        return -1;
    }
    printf("list type is %d\n",js_list->type);

    cJSON *name = cJSON_GetObjectItem(js_list, "name");
    if(!name) 
    {
        printf("No name !\n");
        return -1;
    }
    printf("name type is %d\n",name->type);
    printf("name is %s\n",name->valuestring);

    cJSON *age = cJSON_GetObjectItem(js_list, "age");
    if(!age) 
    {
        printf("no age!\n");
        return -1;
    }
    printf("age type is %d\n", age->type);
    printf("age is %d\n",age->valueint);

    cJSON *js_other = cJSON_GetObjectItem(root, "other");
    if(!js_other) 
    {
        printf("no list!\n");
        return -1;
    }
    printf("list type is %d\n",js_other->type);

    cJSON *js_name = cJSON_GetObjectItem(js_other, "name");
    if(!js_name) 
    {
        printf("No name !\n");
        return -1;
    }
    printf("name type is %d\n",js_name->type);
    printf("name is %s\n",js_name->valuestring);

    if(root)
    {
        cJSON_Delete(root);
    }
    return 0;
}

打印結(jié)果:

list type is 6
name type is 4
name is luffy
age type is 3
age is 19
list type is 6
name type is 4
name is ace

4.3 解析 Json 數(shù)組

如果我們遇到的 Json 字符串是一個(gè) Json 數(shù)組格式,處理方式和 Json 對(duì)象差不多,比如我們要解析如下字符串:

{\"names\":[\"luffy\",\"robin\"]}

int main(int argc, char **argv)
{
    char *s = "{\"names\":[\"luffy\",\"robin\"]}";
    cJSON *root = cJSON_Parse(s);
    if(!root) 
    {
        printf("get root faild !\n");
        return -1;
    }
    cJSON *js_list = cJSON_GetObjectItem(root, "names");
    if(!js_list)
    {
        printf("no list!\n");
        return -1;
    }
    int array_size = cJSON_GetArraySize(js_list);
    printf("array size is %d\n",array_size);
    for(int i=0; i< array_size; i++) 
    {
        cJSON *item = cJSON_GetArrayItem(js_list, i);
        printf("item type is %d\n",item->type);
        printf("%s\n",item->valuestring);
    }

    if(root)
    {
        cJSON_Delete(root);
    }
    return 0;
}

4.4 解析嵌套的 Json 對(duì)象和數(shù)組

對(duì)于 Json 字符串最復(fù)雜的個(gè)數(shù)莫過(guò)于 Json 對(duì)象和 Json 數(shù)組嵌套的形式,下面通過(guò)一個(gè)例子演示一下應(yīng)該如何解析,字符串格式如下:

{\"list\":[{\"name\":\"luffy\",\"age\":19},{\"name\":\"sabo\",\"age\":21}]}

在解析的時(shí)候,我們只需要按照從屬關(guān)系,一層層解析即可:

  • 根節(jié)點(diǎn)是一個(gè) Json 對(duì)象,基于根節(jié)點(diǎn)中的 key 值取出對(duì)應(yīng)的 value 值,得到一個(gè) Json 數(shù)組
  • 讀出 Json 數(shù)組的大小,遍歷里邊的各個(gè)元素,每個(gè)元素都是一個(gè) Json 對(duì)象
  • 將 Json 對(duì)象中的鍵值對(duì)根據(jù) key 值取出對(duì)應(yīng)的 value 值
  • 從取出的 Value 值中讀出實(shí)際類型對(duì)應(yīng)的數(shù)值 示例代碼如下:
#include "cJSON.h"
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    char *s = "{\"list\":[{\"name\":\"luffy\",\"age\":19},{\"name\":\"sabo\",\"age\":21}]}";
    cJSON *root = cJSON_Parse(s);
    if(!root) 
    {
        printf("get root faild !\n");
        return -1;
    }
    cJSON *list = cJSON_GetObjectItem(root, "list");
    if(!list)
    {
        printf("no list!\n");
        return -1;
    }
    int array_size = cJSON_GetArraySize(list);
    printf("array size is %d\n",array_size);
    
    for(int i=0; i< array_size; i++) 
    {
        cJSON* item = cJSON_GetArrayItem(list, i);
        cJSON* name = cJSON_GetObjectItem(item, "name");
        printf("name is %s\n",name->valuestring);
        cJSON* age = cJSON_GetObjectItem(item, "age");
        printf("age is %d\n",age->valueint);
    }

    if(root)
    {
        cJSON_Delete(root);
    }
    return 0;
}

文章鏈接:https://subingwen.cn/c/cjson%E4%BD%BF%E7%94%A8/

瀏覽 80
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 麻酥酥在线视频| 人人鲁人人操| 超碰观看| 乱伦无码高清麻豆视频一区二区| 熟女人妻人妻HD| 自拍偷拍av| 亚洲免费小黄片| 91re| 日本Sm/调教/捆绑/紧缚| 91人妻人人澡人人| 露脸老熟女91集合| 亚洲AV无码乱码国产| 国产成人片色情AAAA片| 日本免费爱爱视频| 日韩无码三级| 国产AV影片| 精品国产区一区二| 日韩无码波多野结衣| 超碰在线免费| 国产久久这里只有精品视频| 91人人在线| 国产成人亚洲综合AV婷婷| 亚洲午夜久久久| 黑人vs亚洲人在线播放| 500部大龄熟乱4K视频| 婷婷五月天成人电影| 女生操逼网站| 中文字幕免费观看视频| 欧美激情一区二区A片成人牛牛| 久久精品禁一区二区三区四区五区| 亚洲热在线| 久久aaa| 高潮免费视频| 亚洲色图欧美在线| 国产一区二区三区四区五区六区七区| 91双飞会所双飞在线| 四虎在线观看| 91成人免费电影| 亚洲av图片| 天天日日干| 996热re视频精品视频这里| 国产性爱一级片| 日韩中文字幕在线视频| 国产av激情| 中文字幕在线精品| 成人电影一区二区| 女同久久另类99精品国产91| 人人澡人人摸| 国产—级a毛—a毛免费视频| 操屄国产| 午夜操逼| 中文字幕在线观看免费| 97超碰人人操| 天天干中文字幕| 一级A片免费| 亚洲色鬼| 国产精品一区二区免费| 国产日韩在线播放| 欧美熟妇性爱视频| 午夜AV大片| 欧美日韩在线播放| 无码人妻一区二区三区精品不付款| 四川BBB搡BBB搡多人乱| 五月婷婷激情综合| 五月天高清无码| 婷婷国产综合| 18啪啪网站| 99热一区二区三区| 亚洲超级高清无码第一在线视频观看 | 日韩无码操逼视频| 亚洲免费观看高清完整版在线观| 狠狠热视频| 日本无码成人片在线播放| 翔田千里在线一区二区三区| 国色天香一区二区| 中文字幕三级av片| 在线无码播放| 91精品婷婷国产综合久久竹菊| 玖玖精品| 亚洲天堂一区二区三区| 亚洲欧美日韩综合| 无码囯无精品毛片大码| 国产精品蜜| 午夜理伦| AV黄页| 中文字幕乱码无码人妻系列蜜桃| 狼色AV| 人妻熟女在线视频| 欧美V在线| 一区二区中文字幕| 欧美日韩国产a| 国产aaaaaa| 成人一区二区三区四区五区| 成人黄色在线| 尤物在线播放| 91午夜福利| 青草久久久| 日韩操b| 激情综合婷婷| 亚洲色天堂网| 欧美性网站| 无码人妻精品一区二区三区99仓 | 东方AV在线播放| 亚洲AV无码成人| 久久精品国产精品| 另类色综合| 人妻精品在线| 亚洲AV无一区二区三区久久| 日韩成人性爱| 日韩性爱区| www.婷婷六月天| 高清无码二区| 一级黄色视频免费看| 色情片在线观看| 亚洲成人一级片| 99热在线观看免费精品| 国产精品久久久久久久久久久久久| 亚洲第一视频在线观看| 尤物精品在线| 四虎成人免费视频| 激情五月天黄色| 中文字幕亚洲欧美| 精品欧美乱码久久久久久| 超碰免费人妻| 国产一区二区三区在线视频| 国产精品免费观看视频| 尹人成人| 97操逼| 中文字幕在线观看免费高清电影 | 大香久久| 安徽妇搡BBBB搡BBBB袄爱直播 | 少妇搡BBBB搡BBB搡造水多,| 操欧美逼| 亚洲欧美视频| 囯产精品一区二区三区线一牛影视1| 亚洲欧美成人| 亚洲精品视频免费观看| 亚洲夜夜爱| 天天中文字幕| 国产精品扒开腿做爽爽爽A片唱戏| 日韩一区二区AV| 国产久久在线观看| 久久人操| 亚洲激情婷婷| 国产精品theporn| 成年人久久| 欧美性受XXXX黑人XYX性爽一 | 老鸭窝av免费入口在线观看| 亚洲天堂女| 米奇色色| 国产高清秘成人久久| 国产av一区二区三区四区| 亚洲AV无码一区二区三竹菊| 爱液视频| 久久精品久久久久久久| 精品无码9| 黄色一级在线| 欧美视频一区二区三区四区| caopor在线| 中文字幕无码Av在线| 欧美午夜影院| 先锋成人av| 免费啪啪网| 日本国产在线| 亚洲精品人伦一区二区| 欧美丰满少妇人妻精品| 亚洲精品午夜福利| 日本黄色电影网站| 高清无码免费在线视频| 91久久久久久久久| 91.n| 日本中文字幕中文翻译歌词| 日韩在线播放视频| 中文字幕久久人妻无码精品蜜桃 | 小h片在线观看| 天天狠狠| 成人婷婷五月| 欧美一级操逼视频| 日韩人妻在线播放| 欧美丁香五月| 按摩性高湖婬AAA片A片中国| 中文字幕+乱码+中文字幕一区| 国产精品一区二区免费| 黄色一级片免费观看| 麻豆日韩| 婷婷五月天无码| www.91爱爱,com| 99久热| 欧美日韩中字| 欧美韩日一区二区| 99国产精品久久久久久久成人| 四虎成人精品在永久免费| 特级毛片WWW| 理论片熟女奶水哺乳| 亚洲一区二区三区无码| 大屌一区二区三区| 苍井空一区二区三区四区| 少妇搡BBBB搡BBB搡毛片少妇| 一级爱爱爱| 337p西西人体大胆瓣开下部| 国产精品一区二区三| 精品第一页| 亚洲国产成人在线| 少妇一级婬片内射视频| 伊人综合大香蕉| 国产精品无码天天爽视频| 成人视频免费网站| 国产天天操| 精品乱子伦一区二区三区下载 | 日韩高清区| 日批网站视频| 欧美成视频| 久操网站| 欧美18禁| 91美女被操| 91人妻人人澡人人澡人人精品| 亚洲无码专区在线| 黄色网页在线观看| 欧美性爱一级视频| 猛男大粗猛爽h男人味| 亚洲AV无码精品国产| 亚洲无码电影网站| 中文字幕av在线观看| 在线草| 97伊人大香蕉| 国产黄色免费电影| 国产一二三四区| 中文字幕免费| 日本少妇性爱视频| 欧美熟妇一区二区| 日本成人一区| 中文字幕视频2023| 操逼网站在线| 91丨PORN丨国产| 久久精品99久久久久久| 激情网站在线观看| 99re6热在线精品视频功能| 伊人色综合网| 高清无码日本| 你懂的在线播放| 精品人妻一区二区三区四区不卡在| 国产美女激情视频| 成年视频网站| 无码91| 日韩一级黄色电影| 911国产在线| 一级特黄色片| 色色丁香| 午夜福利高清在线观看| 午夜国产在线视频| 精东影业AV无码精品| 亚洲福利在线观看| 欧美中文字幕| 超碰在线| 久久久国产精品黄毛片| 欧美亚洲天堂网| 91久久久久久| 欧美成人无码A片免费| 国产在线观看免费视频| 99综合网| 江苏妇搡BBBB搡BBB| 国产第一页在线观看| 国产在线观看国产精品产拍| 国产午夜成人| 日本操b| 天天操一操| 国产精品久久久久久亚洲影视| 午夜3D动漫AV| 亚洲精品天堂无码| 一级黄色电影免费| 色哟哟国产| 国产AV18岁| 激情小说在线视频| 在线观看日本vs欧洲vs美洲| 最新中文字幕免费MV第一季歌词| 日韩在线成人视频| 中国a一片一级一片| 3D精品啪啪一区二区免费| 亚洲激情性爱| 黄色免费网站| 亚洲艹| 国产日韩一区| 影音先锋国产AV| 亚洲成人资源| 欧美XXXXBBBB| 殴殴美日韩在线| 在线观看免费无码视频| 高清无码波多野结衣| 国产精品V亚洲精品V日韩精品| 操逼网站在线看| 偷拍无码| 色诱AV| 免费观看黄色视频网站| 日本一区二区不卡| 青青草视频免费在线观看| 亚洲成人内射| 最好看的2019中文在线大全电影| 91丨精品丨国产丨丝袜| 亚洲va中文字幕| h片在线观看| 超碰91免费在线观看| 婷婷丁香五月花| 婷婷五月综合激情| 亚洲精品视频免费观看| 黑人人妻黑人ThePorn| 自拍偷拍激情视频| 日本天堂在线视频| 天天射天天操天天干| 亚洲小说区图片区都市| 91在线无码精品秘国产| 蜜桔视频嫩草蜜桃| 日爽夜爽| 一曲二曲三曲在线观看中文字| 黄色小电影网站| 欧洲黑人成人A版免费视频| 成人国产精品秘欧美高清| 日韩人妻丝袜中文字幕| 91成人视频在线观看| 日韩欧美天堂| 一本色道久久88加勒比| 亚洲日韩国产AV| 成年人视频免费看| 欧洲三级片| XXXX国产| 亚洲无码免费在线| 国产精品AV一区| 97精品人人妻人人| 国产精品后入| BBB搡BBB搡BBB搡BBB | 高清无码二区| 日日夜夜老司机| 99国产精品久久久久久久成人 | 久久99精品国产.久久久久久| 亚洲成人视频在线| 一本色道久久88亚洲精品综合| 91精品婷婷国产综合久久| 午夜操一操一级| 亚洲精品suv视频| 久久福利导航| 国产男人天堂| 最近中文字幕免费mv第一季歌词強上 | 亚洲精品一区二区三区无码电影| 国产午夜视频在线观看| 欧美+日韩+国产+成人+在线| 自拍在线| 亚洲精品视频在线观看免费| 尤物视频在线| JlZZJLZZJlZZ亚洲女人17| 澳门四虎影院| 国产日韩欧美综合精品在线观看| 久久国产毛片| 黄色一级A片| 少妇无码在线| 成人三级电影| 久久久久久久伊人| 伊人网址| 日韩亚洲精品中文字幕| 三级片久久久| 一级a一级a免费观看免免黄‘/| 久久久久三级片| 精品秘一区性综合三区| 人人干人人干人人| 欧美大鸡巴视频| 日韩无码黄片| 熟女视频一区二区| 久久免费小视频| 亚洲中文字幕第一| 久久艹视频| 国产免费AV片在线无码| 午夜看黄片| 狼友免费视频| 9I免费看片黄| 夜夜撸一撸| 日本A片视频| 亚洲人人| 一区二区毛片| www.99热视频| 黄色视频网站免费| 狠狠成人| 黄色视频日本| 精品无码一区二区Av蜜桃| 无码秘蜜桃一区二区| 日本成人高清视频| 男女操逼免费观看| 国产AV影片| 亚洲国产成人va| 91精品婷婷国产综合久久| 99在线精品视频在线观看| 黄片在线免费观看视频| 激情五月天色色| 第四色大香蕉| 老妇槡BBBB| 爱干视频| 日韩A片在线| 殴殴美日韩在线| 在线久草| 青草网在线观看| 国产看片网站| 亚洲男女内射| 大香蕉伊人在线观看| 中文字幕天堂在线| 三级视频网站| 无码人妻丰满熟妇区蜜桃| 色伊人久操视频| 国产日本在线| 影音先锋亚洲无码| 黄网免费在线观看| 黄色福利视频在线观看| 色交视频| 操逼操123| 福利老湿69| 在线免费观看黄色小视频| 久久久在线视频| 中文字幕一区二区三区精华液| 激情丁香五月婷婷| 91探花秘在线播放| 三级无码电影| 五月天堂婷婷| 色色热| 色五月激情小说| 三级成人网站| 特级艺体西西444WWw| 五月婷婷色色网| 91在线超碰| 影音先锋av成人电影| 91视频网| 欧美成人精品在线| 国产女人18毛片18精品| 91视频熟女| 久久精品91| 日韩无码高清网站| 亚洲精品一二三区| 北条麻妃免费视频| 在线无码免费观看| 超碰一区二区三区| 91精品国自产在线观看| 91婷婷射| AV解说| 亚洲福利在线免费观看| 激情91| 黄色一级片免费观看| 无码不卡视频在线观看| 站街大龄熟女x| 午夜福利视频无码| 亚洲综合小说| 91精品国产一区二区三区四区大| 日本大香蕉视频| 欧美mv日韩mv国产网站| 免费无码婬片AAAA片老婦 | 熟睡侵犯の奶水授乳在线| 国产高潮视频在线观看| 五月丁香综合激情| 在线观看一级片| 在线国产视频| 日韩欧美精品18| 超碰P| 青娱乐亚洲领先| 欧美三级网站在线观看| 91探花秘在线播放| 自拍第一页| 97成人人妻一区二区三区| 特级444www| 中文字幕++中文字幕明步| 日韩一二三四区| 嫩BBB搡BBB搡BBB四川| 99视频在线免费观看| 在线观看免费无码| 无码不卡视频在线| 久久伊| 囯产精品久久久久久久久免费无码 | WWW久久| 色视频网| 夜夜骚精品人妻av一区| 国产在线拍偷自揄拍无码一区二区 | gogogo日本免费观看高清电视剧的注意 | 色999在线播放视频| 男女无码视频| 青青色在线视频| 极品在线视频| 男女拍拍| 黄色二区| 北条麻妃波多波多野结衣| 日韩av电影免费在线观看| 大香蕉国产视频| 在线视频免费观看| 摸BBB搡BBB搡BBBB| 成人黄色导航| 高清免费无码| 日韩中出| 婷婷久久在线| 人妻丰满精品一区二区| 中日美朝美女一级片免费看| 西西特级无码444www| 粉嫩av懂色av蜜臀av熟妇| 亚洲高清无码视频大全| 91国产在线播放| 四虎在线免费视频| 亚洲欧美国产另类| 狠狠肏| 欧美婷婷五月天| 少妇搡BBBB搡BBB搡AA| 亚洲少妇性爱视频| 开心色色五月天| 国产视频中文字幕| 春色AV| 精品国产一二三| 69AV视频| 成人国产精品| 黄色视频网站国产| 国产又猛又黄又爽| 中文字幕+乱码+中文乱码91在线观看 | 91嫩草久久久久久久| 精品国产va久久久久久| 日韩欧美高清视频| 国产精品成人无码a无码| 男人操女人免费网站| 日韩日日操| 国产色五月视频| 国产日韩精品无码去免费专区国产| 中文字幕第69页| 上海熟妇搡BBBB搡BBBB| 国产成人视频免费在线观看| 操B视频在线| 欧美日韩男女淫乱一区二区| 97色综合| 亚洲国产高清无码| 久操视频在线免费观看| 欧美性性生交XXXXX无码| 骚逼逼影院| 69福利| 一级免费爱爱视频| 欧美99在线| gogogo视频在线观看黑人| 日韩人妻精品中文字幕| 重庆美女揉BBBB搡BBBB| 靠逼免费视频| 日韩精品综合| 91精品婷婷国产综合久久蝌蚪 | 日产电影一区二区三区| 免费欧美黄色| 青青综合网| 91麻豆电影| 苏妲己一级婬片A片| 好吊视频一区二区三区红桃视频you | 黄色小说视频网站| 天天免费视频| 日日日日日干| 久久大陆| 大香蕉午夜视频| 婷婷五月天激情电影| 久久免费视频网站| 99热高清| 日日爱av| 99免费视频在线| 蜜桃在线一区| aaa少妇| 影音先锋资源| 日韩无码免费| www.91av| 久操视频在线| 丁香婷婷男人天堂| 日韩免费视频| 午夜黄电影| 韩国GOGOGO高清| 午夜3D动漫AV| 亚洲福利视频97| 午夜性爽视频男人的天堂| 亚洲天堂无码| 色香蕉视频在线观看| 成人电影亚洲天堂| 国产狂喷水潮免费网站www | 另类老妇极品BBWBBw| 人人看人人艹| WWWA级片| 永久免费不卡在线观看黄网站 | 亚洲精品成人视频| 免费av在线播放| 欧美熟妇性爱| 日本少妇高潮| 乱伦三区| 黄色视频网站免费观看| 91丨露脸丨熟女| 日韩高清在线播放| 香蕉毛片| 九九色影院| 成人黄色电影在线观看| 一本一道AV| 99热66| 欧美性爱一区二区| 日韩二区| 秋霞一区二区三区无码| 婷婷丁香人妻天天爽| 在线观看一区二区视频| 色五月婷婷视频| 91久久精品一区二区三区| 日韩欧美性爱视频| 亚洲秘无码一区二区三区电影| 国产一级电影网站| 午夜福利资源| 色哟哟一区二区三区| 91亚洲高清| 黄色国产av| 亚洲国产精品视频| 日本大胆中出| 中文字幕五月久久婷婷| 色婷婷中文在线| 六月综合网| 久久怡春院| 国产伦精一品二品三品app| 看看AV| 综合天堂AV久久久久久久| 亚洲成人影片| 国产一级二级三级视频| 99视频在线免费播放| 蜜桃传媒入口| 亚洲男人天堂AV| 黄骗免费网站| 精产国品一区二区区别| 国产熟女一区二区视频网站| 亚洲欧美激情小说另类| 亚洲婷婷在线视频| 欧美一卡| 欧美日色| seseav| 日韩操逼片| 国产剧情自拍| 麻豆一级| 亚洲中文字幕在线视频观看| 国产逼| 日韩精品在线视频| 日韩大吊| 人人色在线观看| 日日夜夜AV| 操逼99| 新超碰在线观看| 视频一区中文字幕| 操逼操123| 亚洲精品蜜桃| 人妻丝袜中出北条麻妃| 乱伦小说五月天| 欧美亚洲成人视频| 亚洲天堂一区二区| 久久天堂| 黑人精品XXX一区一二区| AV黄页| 亚洲免费在线视频观看| 国产精品久久AV电影| 欧亚一区二区| 100国产精品人妻无码| 无套内射学生妹去看片| 中文字幕在线免费视频| 开心激情播播网| 亚洲AV成人电影| 丰满人妻一区二区三区精品高| 亚洲精品秘一区二区三区蜜桃久| 婷婷五月天丁香成人社区| WWW.亚洲无码| 国产免费一区| 色tv在线| 亚洲美女网站免费观看网址 | 黄色免费AV| 69AV无码| 91国产精品| 躁BBB躁BBB躁BBBBBB日视频| 大香蕉男人天堂| 青青草手机视频| 毛片9| 亚洲无码www| 久久成人精品| 嫩草A片www在线观看| 天天高清无码| 91人妻人人澡人人爽人| 天堂成人av| 中文有码在线观看| 国产高清一区二区| 无码国产传媒精品一区| 五月丁香视频在线观看| 亚洲热在线观看| 久久g热| 久久女人网| 午夜天堂精品久久久久| av无码免费在线观看| 69网站| 成人AV电影在线观看| 这里只有精品视频在线| 韩日一区二区| 豆花无码视频一区二区| 蜜桃av秘无码一区三| 久色网| 懂色av懂色av粉嫩av| 免费亚洲无码| 思思热99热| 成年人在线播放| 欧美操逼图| www黄色片| 中文字幕AV在线观看| 久热在线资源福利站| 操比在线| 日本处女性高潮喷水视频| 国产成人精品一区二区三区视频| 久久久久网站| 乱伦AV网| 玖玖av| 久热久| 操逼网五月天| 中文字幕av久久久久久欧洲尺码 | 亚洲日本黄色视频| 中文字幕浅井香舞被黑人俘虏| 国产美女福利| 日韩高清无码一区二区| 高H网站| 黃色一级A一片人与| 久久视频网站| 国产色情在线观看| 5252a我爱haose01我愿| 三级网站免费观看| 中文字幕88页| 日韩人妻AV| 伊人久久大综合中文无码| 亚洲中文字墓| 香蕉av在线观看| 狠狠操免费视频| 久久精彩偷拍视频| 国产精品污www在线观看| 伊人网视频在线| 懂色av懂色av粉嫩av| 伊人无码视频| 色综合色综合色综合| 欧美级毛片一进一出| 特级西西444www高清大胆免费看 | 国产在线一区二区三区四区| 国产精品你懂的| 伊人大香在线| 91精品一区| 伊人综合成人网| 人妻人人操人人爽| 青青免费视频| 性生活无码视频| 日比视频| 人人操人人干人人看| 久操视频免费观看| 欧美大鸡巴在线观看| 亚洲精品一区二区三区| 青青操b| 亚洲成人自拍| 少妇推油呻吟白浆啪啪成人片| 国产欧美高清在线| 人妻乱码| 91麻豆国产在线| AV在线直播| 人人艹在线| 人妻日韩精品中文字幕| 久久成人影音先锋| 逼逼影院| a天堂视频| 亚洲日韩欧美色图| 亚洲成人免费视频| 激情婷婷综合| 日本无码片| 久久午夜视频| 中文字幕巨肉乱码中文乱码| 天天色天天色| 大香蕉伊人网站| 91无码一区二区| 91无码人妻传媒tv| www九九九| 激情中文网| 亚洲高清无码一区| 国产毛片精品一区二区色欲黄A片| 亚洲品久久久蜜| 日韩视频精品| 肏屄在线观看| 亚洲成人中文字幕| 国产—a毛—a毛A免费看图| 成人激情久久| 91视频观看| 黄色电影网站在线观看| 台湾AV在线| 日日撸| 无码人妻精品一区二区三区蜜桃91| 日韩AV成人无码久久电影| 午夜熟睡乱子伦视频| 色综合中文字幕| 亚州在线播放| 无码日韩精品一区二区免费96| 天天干天| 一本久久综合亚洲鲁鲁五月天| 91在线视频播放| 91人妻人人澡人人爽人人精| 无码高清视频在线观看| 91免费在线视频| 91青青草视频| 91精品国产成人做爰观看奶头| 成人视频欧美| 亚洲中文字幕在线免费观看视频| 亚洲色欲av| 三级国产在线| 人人摸人人搞| 日韩黄频| 69成人天堂无码免费| 久久久无码电影| 天堂a√中文8| 最新AV在线| 日韩天堂在线观看| 亚洲成人在线一区| h片在线免费观看| 五月天国产精品| 少妇厨房愉情理伦BD在线观看| 亚洲成人电影天堂| 国产AV高清| 人成在线免费视频| 日韩视频――中文字幕| 久久亚洲AV成人无码国产野外| 亚洲中文字幕人妻。| 大黑鸡巴视频| 91久久久久国产一区二区| 可以看的毛片| 亚洲欧美久久久久久久久久久久| 黄色成人在线观看| 色噜噜在线| 免费肏逼视频| 一级香蕉视频| 激情二区| 亚洲色逼图片| 久草超碰| a网站在线观看| 粉嫩av懂色av蜜臀av熟妇| 成人激情四射网| 69视频在线观看免费| 苍井空亚洲精品AA片在线播放| 久久人爽| 五月涩| 一级a免一级a做免费线看内祥| 自拍三级| 日本特黄一级片| 久久久桃色| 超碰AV在线| 婷婷五月在线观看| 在线观看日韩AV| 欧美AAA片| 国产中文字幕第一页| 大香蕉在线视频观看| 国产精品怡红院有限公司| 97福利视频| 六月婷婷综合| 噜噜噜av| 久久无码高清| 麻豆一区在线观看| 麻豆AV免费看| 欧美一级A片在免费看| 五月天婷婷在线播放视频免费观看 | 91久久婷婷国产麻豆精品电影.co| 大香蕉一级片| 97人妻在线视频| 激情五月天在线观看| 熟女老阿V8888AV| 久久波多野结衣一区二区| AV国产精品| 中文字幕资源在线| 久久精品操| 亚洲国产成人va| 亚洲高清无码电影| 一区二区免费视频| 欧美成人网站在线观看| 一级免费黄色片| 国产偷拍网站| 色性网| 91蜜桃传媒在线观看| 婷婷国产成人精品视频| AV资源在线免费观看| 天天干婷婷五月天| 国产aaaaaaaaaaaaa| 波多野结衣99| 天天插天天| 色色视频免费看| 久久水密桃| 久久99精品国产.久久久久 | 久操久干| 欧美精品久久久久久久久| 毛片a级| 欧美视频自拍| 国产一级特黄大片| 91欧美精品成人AAA片| 影音先锋91| 成人黄色AV网站| 欧美爱爱网站| 国内自拍欧美| 大鸡吧操视频| 真人一级毛毛片| 狠狠插网站| 91人妻人人爽人人澡| 日韩欧美一级二级| 国产香蕉在线视频| 久久久久久久久久久国产| 日韩欧美在线中文字幕| 成人免费精品视频| 天堂va欧美va亚洲va在线| 日韩亚洲天堂| 日韩无码操逼视频| 日韩中文字幕在线观看视频|