日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rapidjson官方教程

發布時間:2024/4/11 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rapidjson官方教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文地址:http://rapidjson.org/zh-cn/md_doc_tutorial_8zh-cn.html 教程

目錄

  • Value 及 Document
  • 查詢Value
    • 查詢Array
    • 查詢Object
    • 查詢Number
    • 查詢String
  • 創建/修改值
    • 改變Value類型
    • 轉移語意(Move Semantics)
      • 轉移語意及臨時值
    • 創建String
    • 修改Array
    • 修改Object
    • 深復制Value
    • 交換Value
  • 下一部分

本教程簡介文件對象模型(Document Object Model, DOM)API。

如用法一覽中所示,可以解析一個JSON至DOM,然后就可以輕松查詢及修改DOM,并最終轉換回JSON。

Value 及 Document

每個JSON值都儲存為Value類,而Document類則表示整個DOM,它存儲了一個DOM樹的根Value。RapidJSON的所有公開類型及函數都在rapidjson命名空間中。

查詢Value

在本節中,我們會使用到example/tutorial/tutorial.cpp中的代碼片段。

假設我們用C語言的字符串儲存一個JSON(const char* json):

{ "hello": "world", "t": true , "f": false, "n": null, "i": 123, "pi": 3.1416, "a": [1, 2, 3, 4] }

把它解析至一個Document:

#include "rapidjson/document.h" using namespace rapidjson; // ... Document document; document.Parse(json);

那么現在該JSON就會被解析至document中,成為一棵*DOM樹*:

教程中的DOM

自從RFC 7159作出更新,合法JSON文件的根可以是任何類型的JSON值。而在較早的RFC 4627中,根值只允許是Object或Array。而在上述例子中,根是一個Object。

assert(document.IsObject());

讓我們查詢一下根Object中有沒有"hello"成員。由于一個Value可包含不同類型的值,我們可能需要驗證它的類型,并使用合適的API去獲取其值。在此例中,"hello"成員關聯到一個JSON String。

assert(document.HasMember("hello")); assert(document["hello"].IsString()); printf("hello = %s\n", document["hello"].GetString()); world

JSON True/False值是以bool表示的。

assert(document["t"].IsBool()); printf("t = %s\n", document["t"].GetBool() ?"true" : "false"); true

JSON Null值可用IsNull()查詢。

printf("n = %s\n", document["n"].IsNull() ?"null" : "?"); null

JSON Number類型表示所有數值。然而,C++需要使用更專門的類型。

assert(document["i"].IsNumber()); // 在此情況下,IsUint()/IsInt64()/IsUInt64()也會返回 true assert(document["i"].IsInt()); printf("i = %d\n", document["i"].GetInt()); // 另一種用法: (int)document["i"] assert(document["pi"].IsNumber()); assert(document["pi"].IsDouble()); printf("pi = %g\n", document["pi"].GetDouble()); i = 123 pi = 3.1416

JSON Array包含一些元素。

// 使用引用來連續訪問,方便之余還更高效。 const Value& a = document["a"]; assert(a.IsArray()); for (SizeType i = 0; i < a.Size(); i++) // 使用 SizeType 而不是 size_t printf("a[%d] = %d\n", i, a[i].GetInt()); a[0] = 1 a[1] = 2 a[2] = 3 a[3] = 4

注意,RapidJSON并不自動轉換各種JSON類型。例如,對一個String的Value調用GetInt()是非法的。在調試模式下,它會被斷言失敗。在發布模式下,其行為是未定義的。

以下將會討論有關查詢各類型的細節。

查詢Array

缺省情況下,SizeType是unsigned的typedef。在多數系統中,Array最多能存儲2^32-1個元素。

你可以用整數字面量訪問元素,如a[0]、a[1]、a[2]。

Array與std::vector相似,除了使用索引,也可使用迭代器來訪問所有元素。

for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) printf("%d ", itr->GetInt());

還有一些熟悉的查詢函數:

  • SizeType Capacity() const
  • bool Empty() const

查詢Object

和Array相似,我們可以用迭代器去訪問所有Object成員:

static const char* kTypeNames[] = { "Null", "False", "True","Object", "Array", "String","Number" }; for (Value::ConstMemberIterator itr = document.MemberBegin(); itr != document.MemberEnd(); ++itr) { printf("Type of member %s is %s\n", itr->name.GetString(), kTypeNames[itr->value.GetType()]); } Type of member hello is String Type of member t is True Type of member f is False Type of member n is Null Type of member i is Number Type of member pi is Number Type of member a is Array

注意,當operator[](const char*)找不到成員,它會斷言失敗。

若我們不確定一個成員是否存在,便需要在調用operator[](const char*)前先調用HasMember()。然而,這會導致兩次查找。更好的做法是調用FindMember(),它能同時檢查成員是否存在并返回它的Value:

Value::ConstMemberIterator itr = document.FindMember("hello"); if (itr != document.MemberEnd()) printf("%s %s\n", itr->value.GetString());

查詢Number

JSON只提供一種數值類型──Number。數字可以是整數或實數。RFC 4627規定數字的范圍由解析器指定。

由于C++提供多種整數及浮點數類型,DOM嘗試盡量提供最廣的范圍及良好性能。

當解析一個Number時, 它會被存儲在DOM之中,成為下列其中一個類型:

類型 描述
unsigned32位無號整數
int32位有號整數
uint64_t64位無號整數
int64_t64位有號整數
double64位雙精度浮點數

當查詢一個Number時, 你可以檢查該數字是否能以目標類型來提取:

查檢 提取
bool IsNumber()不適用
bool IsUint()unsigned GetUint()
bool IsInt()int GetInt()
bool IsUint64()uint64_t GetUint64()
bool IsInt64()int64_t GetInt64()
bool IsDouble()double GetDouble()

注意,一個整數可能用幾種類型來提取,而無需轉換。例如,一個名為x的Value包含123,那么x.IsInt() == x.IsUint() == x.IsInt64() == x.IsUint64() == true。但如果一個名為y的Value包含-3000000000,那么僅會令x.IsInt64() == true。

當要提取Number類型,GetDouble()是會把內部整數的表示轉換成double。注意int?和unsigned可以安全地轉換至double,但int64_t及uint64_t可能會喪失精度(因為double的尾數只有52位)。

查詢String

除了GetString(),Value類也有一個GetStringLength()。這里會解釋個中原因。

根據RFC 4627,JSON String可包含Unicode字符U+0000,在JSON中會表示為"\\u0000"。問題是,C/C++通常使用空字符結尾字符串(null-terminated string),這種字符串把`\0'作為結束符號。

為了符合RFC 4627,RapidJSON支持包含U+0000的String。若你需要處理這些String,便可使用GetStringLength()去獲得正確的字符串長度。

例如,當解析以下的JSON至Document d之后:

{ "s" : "a\u0000b" }

"a\\u0000b"值的正確長度應該是3。但strlen()會返回1。

GetStringLength()也可以提高性能,因為用戶可能需要調用strlen()去分配緩沖。

此外,std::string也支持這個構造函數:

string(const char* s, size_t count);

此構造函數接受字符串長度作為參數。它支持在字符串中存儲空字符,也應該會有更好的性能。

比較兩個Value

你可使用==及!=去比較兩個Value。當且僅當兩個Value的類型及內容相同,它們才當作相等。你也可以比較Value和它的原生類型值。以下是一個例子。

if (document["hello"] == document["n"])/*...*/; // 比較兩個值 if (document["hello"] =="world") /*...*/; // 與字符串家面量作比較 if (document["i"] != 123)/*...*/; // 與整數作比較 if (document["pi"] != 3.14)/*...*/; // 與double作比較

Array/Object順序以它們的元素/成員作比較。當且僅當它們的整個子樹相等,它們才當作相等。

注意,現時若一個Object含有重復命名的成員,它與任何Object作比較都總會返回false。

創建/修改值

有多種方法去創建值。 當一個DOM樹被創建或修改后,可使用Writer再次存儲為JSON。

改變Value類型

當使用默認構造函數創建一個Value或Document,它的類型便會是Null。要改變其類型,需調用SetXXX()或賦值操作,例如:

Document d;// Null d.SetObject(); Value v;// Null v.SetInt(10); v = 10; // 簡寫,和上面的相同

構造函數的各個重載

幾個類型也有重載構造函數:

Value b(true);// 調用Value(bool) Value i(-123);// 調用 Value(int) Value u(123u);// 調用Value(unsigned) Value d(1.5);// 調用Value(double)

要重建空Object或Array,可在默認構造函數后使用?SetObject()/SetArray(),或一次性使用Value(Type):

Value o(kObjectType); Value a(kArrayType);

轉移語意(Move Semantics)

在設計RapidJSON時有一個非常特別的決定,就是Value賦值并不是把來源Value復制至目的Value,而是把把來源Value轉移(move)至目的Value。例如:

Value a(123); Value b(456); b = a; // a變成Null,b變成數字123。 使用移動語意賦值。

為什么?此語意有何優點?

最簡單的答案就是性能。對于固定大小的JSON類型(Number、True、False、Null),復制它們是簡單快捷。然而,對于可變大小的JSON類型(String、Array、Object),復制它們會產生大量開銷,而且這些開銷常常不被察覺。尤其是當我們需要創建臨時Object,把它復制至另一變量,然后再析構它。

例如,若使用正常*復制*語意:

Value o(kObjectType); { Value contacts(kArrayType); // 把元素加進contacts數組。 // ... o.AddMember("contacts", contacts, d.GetAllocator());// 深度復制contacts (可能有大量內存分配) // 析構contacts。 } 復制語意產生大量的復制操作。

那個o?Object需要分配一個和contacts相同大小的緩沖區,對conacts做深度復制,并最終要析構contacts。這樣會產生大量無必要的內存分配/釋放,以及內存復制。

有一些方案可避免實質地復制這些數據,例如引用計數(reference counting)、垃圾回收(garbage collection, GC)。

為了使RapidJSON簡單及快速,我們選擇了對賦值采用*轉移*語意。這方法與std::auto_ptr相似,都是在賦值時轉移擁有權。轉移快得多簡單得多,只需要析構原來的Value,把來源memcpy()至目標,最后把來源設置為Null類型。

因此,使用轉移語意后,上面的例子變成:

Value o(kObjectType); { Value contacts(kArrayType); // adding elements to contacts array. o.AddMember("contacts", contacts, d.GetAllocator());// 只需 memcpy() contacts本身至新成員的Value(16字節) // contacts在這里變成Null。它的析構是平凡的。 } 轉移語意不需復制。

在C++11中這稱為轉移賦值操作(move assignment operator)。由于RapidJSON 支持C++03,它在賦值操作采用轉移語意,其它修改形函數如AddMember(),?PushBack()也采用轉移語意。

轉移語意及臨時值

有時候,我們想直接構造一個Value并傳遞給一個“轉移”函數(如PushBack()、AddMember())。由于臨時對象是不能轉換為正常的Value引用,我們加入了一個方便的Move()函數:

Value a(kArrayType); Document::AllocatorType& allocator = document.GetAllocator(); // a.PushBack(Value(42), allocator); // 不能通過編譯 a.PushBack(Value().SetInt(42), allocator);// fluent API a.PushBack(Value(42).Move(), allocator);// 和上一行相同

創建String

RapidJSON提供兩個String的存儲策略。

  • copy-string: 分配緩沖區,然后把來源數據復制至它。
  • const-string: 簡單地儲存字符串的指針。
  • Copy-string總是安全的,因為它擁有數據的克隆。Const-string可用于存儲字符串字面量,以及用于在DOM一節中將會提到的in-situ解析中。

    為了讓用戶自定義內存分配方式,當一個操作可能需要內存分配時,RapidJSON要求用戶傳遞一個allocator實例作為API參數。此設計避免了在每個Value存儲allocator(或document)的指針。

    因此,當我們把一個copy-string賦值時, 調用含有allocator的SetString()重載函數:

    Document document; Value author; char buffer[10]; int len = sprintf(buffer,"%s %s", "Milo", "Yip");// 動態創建的字符串。 author.SetString(buffer, len, document.GetAllocator()); memset(buffer, 0, sizeof(buffer)); // 清空buffer后author.GetString() 仍然包含 "Milo Yip"

    在此例子中,我們使用Document實例的allocator。這是使用RapidJSON時常用的慣用法。但你也可以用其他allocator實例。

    另外,上面的SetString()需要長度參數。這個API能處理含有空字符的字符串。另一個SetString()重載函數沒有長度參數,它假設輸入是空字符結尾的,并會調用類似strlen()的函數去獲取長度。

    最后,對于字符串字面量或有安全生命周期的字符串,可以使用const-string版本的SetString(),它沒有allocator參數。對于字符串家面量(或字符數組常量),只需簡單地傳遞字面量,又安全又高效:

    Value s; s.SetString("rapidjson");// 可包含空字符,長度在編譯萁推導 s = "rapidjson"; // 上行的縮寫

    對于字符指針,RapidJSON需要作一個標記,代表它不復制也是安全的。可以使用StringRef函數:

    const char * cstr = getenv("USER"); size_t cstr_len = ...;// 如果有長度 Value s; // s.SetString(cstr); // 這不能通過編譯 s.SetString(StringRef(cstr));// 可以,假設它的生命周期案全,并且是以空字符結尾的 s = StringRef(cstr); // 上行的縮寫 s.SetString(StringRef(cstr, cstr_len));// 更快,可處理空字符 s = StringRef(cstr, cstr_len); // 上行的縮寫

    修改Array

    Array類型的Value提供與std::vector相似的API。

    • Clear()
    • Reserve(SizeType, Allocator&)
    • Value& PushBack(Value&, Allocator&)
    • template <typename T> GenericValue& PushBack(T, Allocator&)
    • Value& PopBack()
    • ValueIterator Erase(ConstValueIterator pos)
    • ValueIterator Erase(ConstValueIterator first, ConstValueIterator last)

    注意,Reserve(...)及PushBack(...)可能會為數組元素分配內存,所以需要一個allocator。

    以下是PushBack()的例子:

    Value a(kArrayType); Document::AllocatorType& allocator = document.GetAllocator(); for (int i = 5; i <= 10; i++) a.PushBack(i, allocator); // 可能需要調用realloc()所以需要allocator // 流暢接口(Fluent interface) a.PushBack("Lua", allocator).PushBack("Mio", allocator);

    與STL不一樣的是,PushBack()/PopBack()返回Array本身的引用。這稱為流暢接口(_fluent interface_)。

    如果你想在Array中加入一個非常量字符串,或是一個沒有足夠生命周期的字符串(見Create String),你需要使用copy-string API去創建一個String。為了避免加入中間變量,可以就地使用一個臨時值:

    // 就地Value參數 contact.PushBack(Value("copy", document.GetAllocator()).Move(), // copy string document.GetAllocator()); // 顯式Value參數 Value val("key", document.GetAllocator()); // copy string contact.PushBack(val, document.GetAllocator());

    修改Object

    Object是鍵值對的集合。每個鍵必須為String。要修改Object,方法是增加或移除成員。以下的API用來增加城員:

    • Value& AddMember(Value&, Value&, Allocator& allocator)
    • Value& AddMember(StringRefType, Value&, Allocator&)
    • template <typename T> Value& AddMember(StringRefType, T value, Allocator&)

    以下是一個例子。

    Value contact(kObject); contact.AddMember("name","Milo", document.GetAllocator()); contact.AddMember("married",true, document.GetAllocator());

    使用StringRefType作為name參數的重載版本與字符串的SetString的接口相似。 這些重載是為了避免復制name字符串,因為JSON object中經常會使用常數鍵名。

    如果你需要從非常數字符串或生命周期不足的字符串創建鍵名(見創建String),你需要使用copy-string API。為了避免中間變量,可以就地使用臨時值:

    // 就地Value參數 contact.AddMember(Value("copy", document.GetAllocator()).Move(), // copy string Value().Move(),// null value document.GetAllocator()); // 顯式參數 Value key("key", document.GetAllocator()); // copy string name Value val(42);// 某Value contact.AddMember(key, val, document.GetAllocator());

    移除成員有幾個選擇:

    • bool RemoveMember(const Ch* name):使用鍵名來移除成員(線性時間復雜度)。
    • bool RemoveMember(const Value& name):除了name是一個Value,和上一行相同。
    • MemberIterator RemoveMember(MemberIterator):使用迭代器移除成員(_常數_時間復雜度)。
    • MemberIterator EraseMember(MemberIterator):和上行相似但維持成員次序(線性時間復雜度)。
    • MemberIterator EraseMember(MemberIterator first, MemberIterator last):移除一個范圍內的成員,維持次序(線性時間復雜度)。

    MemberIterator RemoveMember(MemberIterator)使用了“轉移最后”手法來達成常數時間復雜度。基本上就是析構迭代器位置的成員,然后把最后的成員轉移至迭代器位置。因此,成員的次序會被改變。

    深復制Value

    若我們真的要復制一個DOM樹,我們可使用兩個APIs作深復制:含allocator的構造函數及CopyFrom()。

    Document d; Document::AllocatorType& a = d.GetAllocator(); Value v1("foo"); // Value v2(v1); // 不容許 Value v2(v1, a);// 制造一個克隆 assert(v1.IsString()); // v1不變 d.SetArray().PushBack(v1, a).PushBack(v2, a); assert(v1.IsNull() && v2.IsNull()); // 兩個都轉移動d v2.CopyFrom(d, a); // 把整個document復制至v2 assert(d.IsArray() && d.Size() == 2); // d不變 v1.SetObject().AddMember("array", v2, a); d.PushBack(v1, a);

    交換Value

    RapidJSON也提供Swap()。

    Value a(123); Value b("Hello"); a.Swap(b); assert(a.IsString()); assert(b.IsInt());

    無論兩棵DOM樹有多復雜,交換是很快的(常數時間)。

    下一部分

    本教程展示了如何詢查及修改DOM樹。RapidJSON還有一個重要概念:

  • 流?是讀寫JSON的通道。流可以是內存字符串、文件流等。用戶也可以自定義流。
  • 編碼定義在流或內存中使用的字符編碼。RapidJSON也在內部提供Unicode轉換及校驗功能。
  • DOM的基本功能已在本教程里介紹。還有更高級的功能,如原位(*in situ*)解析、其他解析選項及高級用法。
  • SAX?是RapidJSON解析/生成功能的基礎。學習使用Reader/Writer去實現更高性能的應用程序。也可以使用PrettyWriter去格式化JSON。
  • 性能展示一些我們做的及第三方的性能測試。
  • 技術內幕講述一些RapidJSON內部的設計及技術。
  • 你也可以參考常見問題、API文檔、例子及單元測試。

    總結

    以上是生活随笔為你收集整理的rapidjson官方教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    亚洲精品短视频 | 天天操夜操 | 亚洲乱码久久久 | 亚洲影院国产 | 久久久精品欧美一区二区免费 | 一 级 黄 色 片免费看的 | 国产成人精品一区二三区 | 91久久国产精品 | 欧美日韩国产二区三区 | 四虎天堂 | 一区二区成人国产精品 | 99精品国产兔费观看久久99 | 三级在线视频观看 | 中文字幕免费一区 | 亚洲综合欧美激情 | 国产午夜麻豆影院在线观看 | 国产美女精品视频 | 日韩中文字幕免费看 | 色视频在线免费观看 | 成人在线视频你懂的 | 免费在线观看av网址 | 久久久久国产成人免费精品免费 | 久久国产免费 | 久草爱视频 | 日韩中文在线播放 | 免费在线中文字幕 | 国产亚洲精品日韩在线tv黄 | 亚洲天堂网视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 91免费试看| 一区二区激情视频 | 日韩a级黄色片 | 麻豆国产精品永久免费视频 | www.激情五月.com | 国产精品成人久久久久久久 | 国产黄色片久久 | 成人中文字幕在线 | 99久久日韩精品视频免费在线观看 | 久久久99精品免费观看app | 色视频 在线| 天天干夜夜操视频 | 片网址 | 成人久久影院 | 久久天天综合网 | 久草资源免费 | 激情五月六月婷婷 | 香蕉视频在线视频 | 午夜18视频在线观看 | 国产精品专区h在线观看 | 日韩精品免费在线播放 | 免费a v网站 | 日韩av黄 | 国产精品第一视频 | 在线免费观看黄 | 久久成人精品视频 | 欧美日韩视频在线观看免费 | 日韩精品视频免费看 | 午夜骚影 | 国产999视频在线观看 | 丁香激情综合国产 | 国产精品1区2区 | 91久久国产自产拍夜夜嗨 | 国产精品久久久区三区天天噜 | 一二三久久久 | 成人午夜电影网 | 超碰成人网 | 国产原创在线观看 | 日韩电影精品一区 | 射九九| 国产亚洲精品久久久久久大师 | 最近免费中文字幕mv在线视频3 | 免费在线一区二区三区 | caobi视频 | 中文国产成人精品久久一 | 日本中文字幕网址 | 久久国产精品小视频 | 色中色亚洲 | 国产视频久久久 | 免费日韩一区二区 | 日韩欧美精品一区二区 | 国内精自线一二区永久 | 91精品伦理 | 伊人狠狠色丁香婷婷综合 | 探花视频在线观看免费版 | 91在线视频免费 | 国产乱对白刺激视频不卡 | 国产97视频在线 | 婷婷久月| 日p在线观看 | 久久久在线视频 | 欧美大码xxxx | 一区二区三区在线不卡 | 极品美女被弄高潮视频网站 | 成人一级影视 | 亚洲精品视频在线观看免费视频 | 免费日韩av电影 | 成人小视频在线观看免费 | 国产精品一区二区三区在线 | 在线免费国产视频 | 中文字幕电影一区 | 蜜臀av性久久久久av蜜臀妖精 | 午夜精品99久久免费 | 精品国产成人av在线免 | 开心激情婷婷 | 不卡的av电影 | 一区二区视频播放 | 亚洲蜜桃在线 | 欧美成人精品欧美一级乱黄 | 三级午夜片 | 国产成人一区三区 | www操操 | 色a资源在线 | 一区二区欧美激情 | 人人讲下载 | 欧美精品一区二区免费 | 久久视频在线看 | 九九热精品国产 | 亚洲特级片 | 免费视频成人 | 久久超 | 香蕉视频91 | 日韩免费视频在线观看 | 88av网站| a级国产乱理论片在线观看 伊人宗合网 | 亚洲韩国一区二区三区 | 精品国产美女 | 国产日韩中文在线 | 91最新视频在线观看 | 91精品国产综合久久福利 | 四虎www | 视频成人| www.夜夜 | 九九九免费视频 | 国产在线国偷精品产拍免费yy | 久久婷婷一区二区三区 | 色av资源网 | 在线播放 日韩专区 | 天天操夜| 久青草国产在线 | 日韩免费在线观看视频 | 国产麻豆果冻传媒在线观看 | 亚洲蜜桃av | 国产 中文 日韩 欧美 | 国产精品区二区三区日本 | 四虎影视精品永久在线观看 | 中文字幕日本特黄aa毛片 | 久久爱综合 | 亚洲国产精品成人av | 久久免费视频一区 | 操久久免费视频 | 成人久久久久久久久 | 免费黄av | 999日韩| 一区二区三区四区精品视频 | 在线黄色av电影 | 黄色看片 | 午夜精品久久久久久久久久久 | 一区在线电影 | 天天操网址 | 亚洲1区 在线 | 国产精品久久久久久妇 | 亚洲精欧美一区二区精品 | 在线观看国产成人av片 | 亚洲一区天堂 | 久草视频视频在线播放 | 成人av观看 | 麻花豆传媒mv在线观看网站 | 亚洲成免费 | aaa毛片视频 | 欧美福利片在线观看 | 五月天色网站 | 国产专区一 | www.黄色网.com | 国产精品2019| 亚洲精品国产精品乱码不99热 | 大胆欧美gogo免费视频一二区 | 国产精品日韩 | 亚洲首页| av久久在线 | 正在播放国产一区 | 成人精品久久久 | 成人av一级片 | 国产91全国探花系列在线播放 | 免费久久99精品国产婷婷六月 | 久久视频这里有精品 | 国产一卡在线 | 国产成人在线免费观看 | 久久久国产在线视频 | 久久精品视频2 | 国产美女视频一区 | 国产精品久久久久久久久久白浆 | 东方av免费在线观看 | 在线观看亚洲专区 | 国产成人精品一区二区三区在线 | 天天草天天干天天 | 91精品免费看 | 黄色三级免费网址 | 91色视频 | 韩国精品一区二区三区六区色诱 | 在线观看视频黄色 | 免费中文字幕视频 | 亚洲永久字幕 | 国产视频一区二区三区在线 | 国产成人在线精品 | 五月婷婷国产 | 国产黄影院色大全免费 | 99精品久久99久久久久 | 麻豆视频免费在线观看 | 欧美日韩一二三四区 | 国产精品毛片一区视频播 | 亚洲天堂精品视频 | 欧美一级性生活 | 久久久久国产精品免费网站 | 久久国产一二区 | 久久久一本精品99久久精品66 | 久久久久久久久久久久av | 9999亚洲| 午夜精品福利在线 | 天天综合在线观看 | 人人爽人人乐 | 91精品国产九九九久久久亚洲 | 亚洲国产精品小视频 | 精品久久久一区二区 | 最新在线你懂的 | 久久视频中文字幕 | 久久久电影网站 | 手机在线观看国产精品 | 精品国产诱惑 | 亚洲视频免费在线 | 九九在线精品视频 | 精品国产1区二区 | 亚洲成人国产 | 天天做天天射 | 色婷婷av一区| 色吊丝av中文字幕 | 国产成人久久av免费高清密臂 | 黄色成人av在线 | www.香蕉视频在线观看 | 亚洲欧洲精品久久 | 91高清免费看 | 综合网色 | 欧美一级免费黄色片 | 婷婷性综合 | 国产一级淫片免费看 | www.黄色网.com | 欧美日韩一区二区视频在线观看 | 国内久久| 日本xxxx.com| 国内精品久久久久影院一蜜桃 | 黄色亚洲免费 | 欧美成人999 | 欧美日韩在线视频一区 | 天天天干天天天操 | 久久精品国产免费看久久精品 | 毛片网站在线 | 男女激情免费网站 | 黄色字幕网 | 韩日精品视频 | 99热超碰在线 | 久久精品久久精品久久精品 | 97超碰人人澡 | 亚洲影视九九影院在线观看 | 碰碰影院 | 狠狠色丁香婷婷综合视频 | 精品国产一区二区三区久久久蜜月 | 欧美人人爱 | 欧美黄色特级片 | 日韩一级电影网站 | 久久高清国产视频 | 日韩免费电影在线观看 | 最近字幕在线观看第一季 | 久久九九精品久久 | 香蕉久久国产 | 99热99re6国产在线播放 | 日日干天天干 | 激情久久久久久久久久久久久久久久 | 日韩在线一级 | 亚洲国产激情 | 国产精品自拍在线 | 天天天天爱天天躁 | 婷婷六月激情 | 国产精品日韩久久久久 | 国产丝袜一区二区三区 | 美国av片在线观看 | 午夜手机看片 | 国产精品久久久久国产精品日日 | 久久综合久久综合久久 | 91麻豆传媒 | 99久久日韩精品免费热麻豆美女 | 国产精品精品久久久久久 | www.狠狠操.com | 色资源网免费观看视频 | 日韩精品一卡 | av电影在线播放 | 久久久精品视频成人 | 久草在线中文888 | 制服丝袜天堂 | 色网站在线免费 | 国产激情电影综合在线看 | 中字幕视频在线永久在线观看免费 | 美女视频免费一区二区 | www.久久色 | 国产精品女人久久久 | 欧美aⅴ在线观看 | 亚洲一级二级三级 | 人人射人人射 | 欧美成人理伦片 | 精品人人爽| 国产精品资源在线观看 | 不卡的一区二区三区 | 久久伊人国产精品 | 91超碰免费在线 | 国产精品久久久久久影院 | 91系列在线观看 | 日本韩国中文字幕 | 国产视频午夜 | 久久影视中文字幕 | 麻豆久久久久 | 午夜精品一区二区三区免费 | 91中文字幕网 | av播放在线| 五月天色丁香 | 99视频精品在线 | 国产精品精品久久久久久 | 美腿丝袜av | 日韩精品免费一区二区 | 成人精品一区二区三区电影免费 | 开心综合网 | 超碰在线个人 | 色播五月激情综合网 | 日日夜夜操操操操 | 韩国一区二区av | 成人教育av | 国产剧在线观看片 | 久久精品三级 | 国产精品99久久久久的智能播放 | 国产剧情一区在线 | 亚洲午夜精品久久久 | 成年人视频在线 | 韩国av不卡| 一级片免费观看视频 | 91传媒视频在线观看 | 干 操 插 | 少妇性aaaaaaaaa视频 | 久99久在线| 色网免费观看 | 中文在线免费视频 | 日韩av在线网站 | 免费在线中文字幕 | 91视频 - 88av| 日韩电影在线观看中文字幕 | 亚洲黄色激情小说 | 亚洲在线色 | 免费色视频网站 | 一区二区久久 | 波多野结衣久久资源 | 欧美日韩中文在线观看 | 91av看片| 久久av高清 | 中文字幕乱偷在线 | 久久美女电影 | 国产亚洲精品久久 | 夜夜躁狠狠燥 | 西西444www大胆无视频 | av电影亚洲| 国产成人av网 | 丁香六月国产 | 激情丁香综合五月 | 成人av片免费观看app下载 | 精品一区在线看 | 欧美亚洲精品在线观看 | 久久tv | 国产精品福利一区 | 久久dvd| 三日本三级少妇三级99 | 日韩亚洲精品电影 | 久草免费新视频 | 国产片免费在线观看视频 | 久久综合色一综合色88 | 女人18片毛片90分钟 | 亚洲视频网站在线观看 | 成人h在线播放 | 97成人在线视频 | 免费av小说 | 一本色道久久综合亚洲二区三区 | 国产午夜影院 | www.99热精品| www免费网站在线观看 | 亚洲高清视频在线观看 | 国产高清福利在线 | 丝袜美腿在线播放 | 日日操网 | 亚洲精品在线免费看 | 久久久av免费 | 久久一区二区三区国产精品 | 欧美精品一区二区在线播放 | 午夜免费电影院 | 欧美污污网站 | 亚洲色五月| 黄色1级大片| 一级欧美黄 | 中文字幕不卡在线88 | 在线激情av电影 | 欧美a在线免费观看 | 成年人看片网站 | 特级毛片在线免费观看 | 国产精品av久久久久久无 | 婷婷国产在线 | 国产大片免费久久 | 在线日韩中文字幕 | 久色小说| 久久99亚洲网美利坚合众国 | 伊人色综合久久天天网 | 久久高清免费观看 | av软件在线观看 | 久久久影视| 最新99热 | 91久久精品一区二区三区 | 欧美日韩一级视频 | 婷婷在线免费视频 | 亚洲国产成人精品在线观看 | 国产福利在线不卡 | 香蕉视频在线观看免费 | 欧美99热 | 亚洲精品中文字幕在线观看 | 亚洲第一久久久 | 91在线中文字幕 | 久久这里只有精品23 | 国产一区麻豆 | 国内精品久久久久久 | 国产精品国产三级国产aⅴ入口 | 超碰人人99 | 久久久天堂 | 日韩大片免费在线观看 | 欧美日韩激情视频8区 | 久久综合九色欧美综合狠狠 | 成人亚洲综合 | 视频国产一区二区三区 | 黄色小说在线免费观看 | 国产精品久久久久一区二区三区共 | 国产精品第一页在线 | 色天堂在线视频 | 色香蕉视频 | 粉嫩av一区二区三区免费 | 国产成人一区二 | 97超碰国产精品女人人人爽 | 精品国产123 | 天天摸天天干天天操天天射 | 亚洲精品网站在线 | 亚洲不卡123 | 久久久久久久久毛片精品 | 特级毛片爽www免费版 | 亚洲成人av在线 | 黄色av电影在线 | 亚洲精品久久久久999中文字幕 | 欧美狠狠色 | 在线影视 一区 二区 三区 | 亚洲日本韩国一区二区 | 激情黄色一级片 | 青青河边草手机免费 | 天天操夜夜想 | 亚洲在线精品 | 狠狠色丁香婷婷综合基地 | 久久高视频| 亚洲va韩国va欧美va精四季 | 九九视频免费在线观看 | 国产成在线观看免费视频 | 国产精品毛片一区二区在线 | 欧美福利在线播放 | 亚洲国产精品成人精品 | 国产欧美三级 | 日本最新高清不卡中文字幕 | 最近2019中文免费高清视频观看www99 | 国产剧在线观看片 | 欧美日bb | 黄网站免费看 | 日韩中文字幕a | 久久久久久久免费 | 精品亚洲国产视频 | 免费观看性生交大片3 | 成人av高清在线观看 | 五月婷婷综| 国内少妇自拍视频一区 | 国产亚洲午夜高清国产拍精品 | 国内精品久久影院 | 特及黄色片 | 91高清视频在线 | 奇米先锋 | 日韩二区三区在线观看 | 精品嫩模福利一区二区蜜臀 | 久久久激情视频 | 在线观看视频亚洲 | www.99av | 久久久夜色 | 91天天操 | 三级性生活视频 | 免费观看一级视频 | 一级黄色片在线免费观看 | 免费碰碰 | 国产精品毛片一区视频播 | 91中文字幕永久在线 | 欧美色图p | 中文字幕在线播放日韩 | 久久96国产精品久久99软件 | 国产精品美女久久久久久免费 | 亚洲韩国一区二区三区 | 中文字幕a∨在线乱码免费看 | 97久久久免费福利网址 | 又污又黄的网站 | 国产成人免费高清 | 色停停五月天 | 亚洲欧美国产精品va在线观看 | 国产成人综 | 国产小视频在线 | 亚洲欧洲精品一区二区精品久久久 | 欧美男同网站 | 久久久久亚洲精品成人网小说 | 日韩一区二区三区免费视频 | 中文字幕亚洲欧美日韩2019 | 久久久精品欧美一区二区免费 | 91视频88av| 狠狠干夜夜操天天爽 | 日本中文乱码卡一卡二新区 | 国产精品久久久久永久免费看 | 99精品国产视频 | 国产精品美乳一区二区免费 | 天天综合狠狠精品 | av成人免费 | 久久精品日产第一区二区三区乱码 | 91在线精品播放 | 国产 成人 久久 | 香蕉在线播放 | 中文字幕国产精品一区二区 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 综合久久婷婷 | 奇米影视777四色米奇影院 | av夜夜操 | 精品亚洲视频在线观看 | 免费 在线 中文 日本 | 日韩av一区在线观看 | 久久在线精品 | 欧美久久久久 | 亚洲综合日韩在线 | h动漫中文字幕 | 欧美三级高清 | 久久国产精品一国产精品 | 人人插人人看 | 久久精品系列 | 成人黄色电影在线观看 | 色综合久久久网 | 久久久福利视频 | 成人一级片免费看 | 亚洲精品a区| 日本一区二区三区免费观看 | 一级欧美黄 | 超碰国产在线观看 | 天天艹天天干天天 | 97精品视频在线 | 91久久国产自产拍夜夜嗨 | 三级av网| 99亚洲国产精品 | 黄网站免费大全入口 | 亚洲国产人午在线一二区 | 亚洲一级二级三级 | 99久久精品午夜一区二区小说 | 91大神一区二区三区 | 久久精品国产v日韩v亚洲 | 日韩欧美电影网 | 国产精品一区二区62 | 久久精品激情 | 五月婷婷综合激情 | 九九九热 | 久青草国产在线 | 大荫蒂欧美视频另类xxxx | 久久dvd| 婷婷午夜激情 | 国产精品亚洲人在线观看 | 五月天视频网 | 国产麻豆精品一区二区 | 成年人视频在线免费观看 | 香蕉视频网站在线观看 | 日韩免费一区二区在线观看 | 99久久精品国产网站 | 日韩国产精品久久久久久亚洲 | av成人免费网站 | 欧美色888 | 欧美成人h版电影 | 久久女同性恋中文字幕 | 欧美日韩在线精品一区二区 | 久久99久久99精品中文字幕 | 麻豆传媒在线视频 | 天天看天天干 | 欧美色图88| 波多野结衣综合网 | 欧美成人免费在线 | av丝袜在线 | av888av.com| 久久乱码卡一卡2卡三卡四 五月婷婷久 | 亚洲精品动漫成人3d无尽在线 | 精品三级av | 日韩在线精品 | 天天插天天狠 | 久久99亚洲网美利坚合众国 | 国产中文字幕大全 | 婷婷网在线| 黄污在线观看 | 波多野结衣在线观看一区 | 亚洲国产欧洲综合997久久, | 欧美做受xxx | 色综合色综合久久综合频道88 | 在线观看香蕉视频 | 国产精品美女免费 | 99久久精品国 | 亚洲精品免费在线播放 | 97色在线观看 | 91色蜜桃 | 久久久久视 | 综合中文字幕 | 欧美日高清视频 | 特级西西444www高清大视频 | 免费成人在线网站 | 天天综合网在线 | 伊人五月婷 | 91探花国产综合在线精品 | 二区中文字幕 | 九九视频在线 | 午夜av在线免费 | 美女免费视频一区 | 久操免费视频 | 国产尤物在线 | 日韩精品一区二 | 成人在线一区二区三区 | 久久草av | 国产黄a三级三级 | 欧美片网站yy | 欧美一级日韩三级 | 玖玖综合网 | 一区二区三区国 | 国产在线国产 | 天天av综合网 | 日日精品 | 久久久久麻豆v国产 | 欧美色黄| 日韩电影在线观看一区二区 | 久久婷亚洲五月一区天天躁 | 激情视频网页 | 国产二区视频在线 | 91精品综合在线观看 | 美女视频a美女大全免费下载蜜臀 | 欧美在线久久 | 久久久久欧美精品 | 天天干天天天 | 久久免费毛片视频 | 免费高清在线视频一区· | 国产精品免费看久久久8精臀av | 青草视频在线看 | 免费视频久久久 | 91在线视频免费播放 | 91成人精品在线 | 国产精品久久久久婷婷二区次 | 五月婷婷av在线 | 美女黄频在线观看 | 狠狠色噜噜狠狠狠合久 | 九九九九热精品免费视频点播观看 | 亚洲天天做| 黄色免费看片网站 | 日本在线成人 | 久草免费电影 | av免费在线观 | 亚洲国产wwwccc36天堂 | 欧美一级xxxx | 在线观看免费成人 | av888.com| 精品在线一区二区三区 | 丁香婷婷色综合亚洲电影 | 深夜国产在线 | 少妇bbw揉bbb欧美 | 在线小视频国产 | 激情图片久久 | 最新av免费在线 | 精品主播网红福利资源观看 | 色网址99| 欧美日韩二区三区 | 国产成人a亚洲精品v | 国产96在线观看 | 亚洲一区二区高潮无套美女 | 伊人超碰在线 | 人人狠狠综合久久亚洲 | 蜜臀一区二区三区精品免费视频 | 国产精品 日韩 欧美 | 国产精品久久久电影 | 久草在线费播放视频 | 2023亚洲精品国偷拍自产在线 | 色婷婷六月天 | 麻豆影视在线免费观看 | 国内一级片在线观看 | 91aaa在线观看 | a在线视频v视频 | 综合视频在线 | 91九色丨porny丨丰满6 | 精品视频一区在线观看 | 亚洲综合欧美日韩狠狠色 | 中文字幕在线观看资源 | 中文成人字幕 | 中文字幕日韩精品有码视频 | 成人啪啪18免费游戏链接 | 久久99久久99精品免费看小说 | 最新国产在线 | 日日夜夜人人天天 | 日韩中文字幕网站 | a国产精品 | 99在线视频观看 | 在线视频一区观看 | 黄网av在线 | 国产精品一区二区免费看 | 深爱激情站 | 日韩一区二区三区在线看 | 久草在线资源观看 | 国产麻豆电影在线观看 | 久久激情影院 | 99精品黄色 | av电影不卡在线 | 免费的黄色的网站 | 人人干网站 | 国产成人精品一区二区三区在线 | 天天射天天操天天 | av中文字幕电影 | 99久久精品一区二区成人 | 国产午夜精品一区二区三区欧美 | 国产91精品欧美 | 亚洲精品av在线 | 九色91视频| www.婷婷com | 精品999在线观看 | 美女黄频在线观看 | 亚洲视频高清 | 在线看毛片网站 | 99久热在线精品视频成人一区 | av线上免费看 | 亚洲欧美在线观看视频 | www视频免费在线观看 | 日日摸日日添夜夜爽97 | 特级xxxxx欧美 | 日韩一级理论片 | 亚洲欧美日韩在线看 | 国产精品美女久久久网av | 日本中文字幕视频 | 六月婷婷色 | 日本中文字幕电影在线免费观看 | 欧美色久| 99精品视频在线观看 | 国产亚洲视频系列 | 狠狠狠干狠狠 | 人人爽人人 | 日韩最新在线 | 精品女同一区二区三区在线观看 | 久久99精品国产99久久6尤 | 精品国产综合区久久久久久 | 国产三级香港三韩国三级 | 国内精品久久久久久久影视麻豆 | 国产一区在线免费观看 | 在线看片91 | 黄色小说在线观看视频 | 在线视频 国产 日韩 | 综合天天网 | 午夜av不卡 | 黄色亚洲在线 | 亚洲精品视频在线观看网站 | 国产精品中文字幕在线观看 | 偷拍视频一区 | 免费看的黄网站 | 一级免费观看 | 激情网第四色 | 深爱五月激情网 | 国产又黄又硬又爽 | 亚洲一区二区黄色 | 五月开心综合 | www.五月婷| 亚洲一本视频 | 国产亚洲视频在线观看 | 国产美女精品久久久 | 成人免费看片98欧美 | 日本在线观看视频一区 | 四虎亚洲精品 | 国产亚洲精品bv在线观看 | 国产91精品高清一区二区三区 | 91人人澡人人爽人人精品 | 天天操夜夜操 | 日日操日日干 | 黄色av三级在线 | 午夜电影久久久 | 蜜桃av综合网| 一二区av | 天天激情综合 | 视频在线观看一区 | 在线看片一区 | 亚洲成人免费 | 久久亚洲免费视频 | 免费在线激情视频 | 天天天色综合a | 欧美性爽爽 | 麻花豆传媒mv在线观看 | 亚洲成色777777在线观看影院 | 国产欧美中文字幕 | av福利在线 | 日本免费一二三区 | 五月天堂网 | 久久久久黄 | 国产亚洲视频在线观看 | 国产高清在线免费 | 日av免费 | 日本精品一区二区 | 绯色av一区 | 麻豆果冻剧传媒在线播放 | 97视频久久久 | 国产黄色片在线免费观看 | 激情网婷婷| 亚洲爽爽网 | 国产色拍拍拍拍在线精品 | 毛片.com| 97成人精品视频在线观看 | 黄色小说免费观看 | 伊人久久国产精品 | 美女黄频视频大全 | 久久黄色网页 | 亚洲最新av | 久久99精品久久只有精品 | 免费观看www视频 | 久久99热久久99精品 | 中文免费观看 | 欧美日韩精品区 | 久草免费电影 | 久久综合影音 | 亚洲欧洲精品一区二区 | 日韩精品一区二区在线 | 一区二区成人国产精品 | 久久免费公开视频 | 久久精品99久久久久久 | 欧美一级在线观看视频 | 天天射天天操天天 | 狠狠色丁香婷婷综合欧美 | 国内精品视频一区二区三区八戒 | 日本一区二区不卡高清 | 成人免费一级片 | 久久综合九色99 | 在线观看免费 | 91精品国产91久久久久久三级 | 91传媒在线观看 | 在线激情影院一区 | 91香蕉视频好色先生 | 西西4444www大胆无视频 | 午夜精品一区二区三区在线播放 | 国产精品18毛片一区二区 | 成人黄色在线播放 | 狠狠的操你 | 在线观看91 | 欧美性大胆 | ,午夜性刺激免费看视频 | 国产亚洲视频在线 | 天天天干夜夜夜操 | 91久久久久久久 | 成片视频在线观看 | 久久亚洲二区 | 久久久久久久av麻豆果冻 | 中文字幕在线成人 | 国产99一区视频免费 | 黄色免费在线视频 | 免费一级毛毛片 | 亚洲三级视频 | 久久人人爽人人片av | 又爽又黄在线观看 | 久久久麻豆精品一区二区 | 中国黄色一级大片 | 久久精品精品电影网 | 久久香蕉电影 | 日韩中文字幕免费 | 国产不卡在线观看视频 | 国产精品18久久久久久久网站 | 五月婷婷综 | 久久国色夜色精品国产 | 久久久精品福利视频 | 中文字幕在线观看一区二区 | 五月婷色 | 日本精品久久久一区二区三区 | 亚洲一级片 | 成年人电影免费在线观看 | 久久精品永久免费 | 玖玖在线视频观看 | 日本在线观看一区二区 | 亚洲精品美女久久17c | 日韩久久午夜一级啪啪 | 毛片99| 久久久噜噜噜久久久 | 91一区二区三区久久久久国产乱 | 午夜成人免费电影 | 国产一区二区精 | 日韩精品三区四区 | 久久情网 | 久久精品久久久久电影 | 久草电影免费在线观看 | 日韩欧美高清不卡 | 免费高清在线观看成人 | 国产高清日韩 | 久久情网 | 日韩欧美视频免费观看 | 亚洲黄色片一级 | 97色综合| 日韩av影视在线 | 精品亚洲欧美无人区乱码 | 欧美午夜视频在线 | 91av九色 | 欧洲精品亚洲精品 | 国产不卡精品 | 国产韩国日本高清视频 | 91爱爱视频 | 美女视频黄在线观看 | 丁香五婷| 天天射天天色天天干 | 99在线观看视频 | 18做爰免费视频网站 | 五月天激情综合网 | 日韩一级成人av | 丁香一区二区 | 日韩av成人在线观看 | 狠狠躁日日躁夜夜躁av | 美女性爽视频国产免费app | 精品视频久久久久久 | 日韩激情视频在线观看 | 9999精品视频 | 欧美另类xxxx | 国产一区二区不卡在线 | 欧美精品一区二区在线播放 | se婷婷 | 国产视频97| 看污网站 | 特级大胆西西4444www | 成年人视频在线免费观看 | 国产亚洲日本 | 91亚洲欧美激情 | 中文字幕中文中文字幕 | 日韩在线一级 | 男女激情网址 | 国产精品免费麻豆入口 | 久久中文字幕视频 | 久久亚洲二区 | 成人a级大片 | 91av原创 | av一本久道久久波多野结衣 | 国产第一页在线播放 | 亚洲香蕉视频 | 一区二区三区视频网站 | 女人高潮一级片 | 五月婷婷丁香 | 国产精品毛片一区二区在线 | a资源在线 | 国产一级做a| 亚洲精品在 | 欧美精品九九99久久 | 久久理论视频 | 波多野结衣视频一区二区 | 国产专区在线视频 | 久久成人国产精品 | 久久久久久久久久久久久久免费看 | 亚洲精品国偷拍自产在线观看蜜桃 | 97人人人人 | 日韩在线高清免费视频 | www日| 国产96av | 久久久久久久18 | 国产精选在线观看 | 亚洲丝袜中文 | 久久九九免费视频 | 综合天天色 | 日韩视频免费看 | 国产色婷婷 | 国产专区在线看 | 久久国产精品一区二区三区 | 亚洲精品久久视频 | 丰满少妇一级 | 国产99中文字幕 | 有没有在线观看av | 欧美精品一区二区性色 | 日本久久久影视 | www.看片网站 | 伊人春色电影网 | 午夜性生活| 国产麻豆剧果冻传媒视频播放量 | 麻豆成人网| 中文字幕在线观看你懂的 | 日韩美女av在线 | 99精品99 | 久久综合九色 | 久久午夜精品视频 | 久久最新网址 | 中文av影院 | 日色在线视频 | 国产精品大片免费观看 | 免费黄色小网站 |