久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

cJSON使用教程(树外构建 out of tree build 概念)(组包概念)

發(fā)布時(shí)間:2025/3/20 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cJSON使用教程(树外构建 out of tree build 概念)(组包概念) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JSON基礎(chǔ):包括組包的概念等

Github:DaveGamble/cJSON

https://github.com/DaveGamble/cJSON

文章目錄

  • Github:DaveGamble/cJSON
  • License
  • Usage
    • Welcome to cJSON.
    • Building
      • copying the source 復(fù)制源
      • CMake
      • Makefile
      • Vcpkg
    • Including cJSON
    • Data Structure
    • Working with the data structure 使用數(shù)據(jù)結(jié)構(gòu)
      • Basic types
      • Arrays
      • Objects
    • Parsing JSON 解析JSON串
    • Printing JSON 打印(遍歷)JSON串
    • Example 示例
      • Printing 打印(序列化)發(fā)送端
        • vs上測(cè)試
      • Parsing 解析(反序列化)接收端
        • VS上測(cè)試(略)
    • Caveats 注意事項(xiàng)
      • Zero Character
      • Character Encoding
      • C Standard
      • Floating Point Numbers
      • Deep Nesting Of Arrays And Objects 數(shù)組和對(duì)象的深度嵌套
      • Thread Safety
      • Case Sensitivity
      • Duplicate Object Members 重復(fù)的對(duì)象成員

License

omitted

Usage

Welcome to cJSON.

cJSON aims to be the dumbest possible parser that you can get your job done with. It’s a single file of C, and a single header file.

JSON is described best here: http://www.json.org/ It’s like XML, but fat-free. You use it to move data around, store things, or just generally represent your program’s state.

As a library, cJSON exists to take away as much legwork as it can, but not get in your way. As a point of pragmatism (i.e. ignoring the truth), I’m going to say that you can use it in one of two modes: Auto and Manual. Let’s have a quick run-through.

I lifted some JSON from this page: http://www.json.org/fatfree.html That page inspired me to write cJSON, which is a parser that tries to share the same philosophy as JSON itself. Simple, dumb, out of the way.

cJSON 旨在成為您可以完成工作的最愚蠢的解析器。 它是 C 的單個(gè)文件和單個(gè)頭文件。

JSON 在這里描述得最好:http://www.json.org/ 它類似于 XML,但沒(méi)有脂肪(意指不含多余的東西)。 你用它來(lái)移動(dòng)數(shù)據(jù),存儲(chǔ)東西,或者只是一般地代表你的程序的狀態(tài)。

作為一個(gè)庫(kù),cJSON 的存在是為了帶走盡可能多的跑腿工作,但不會(huì)妨礙您。 作為實(shí)用主義的一點(diǎn)(即忽略事實(shí)),我會(huì)說(shuō)您可以在以下兩種模式之一中使用它:自動(dòng)和手動(dòng)。 讓我們快速瀏覽一下。

我從這個(gè)頁(yè)面中提取了一些 JSON:http://www.json.org/fatfree.html 該頁(yè)面啟發(fā)了我編寫 cJSON,它是一個(gè)嘗試與 JSON 本身共享相同理念的解析器。 簡(jiǎn)單,愚蠢,不礙事。

Building

There are several ways to incorporate cJSON into your project.

有幾種方法可以將 cJSON 合并到您的項(xiàng)目中。

copying the source 復(fù)制源

Because the entire library is only one C file and one header file, you can just copy cJSON.h and cJSON.c to your projects source and start using it.

cJSON is written in ANSI C (C89) in order to support as many platforms and compilers as possible.

因?yàn)檎麄€(gè)庫(kù)只有一個(gè) C 文件和一個(gè)頭文件,您只需將 cJSON.h 和 cJSON.c 復(fù)制到您的項(xiàng)目源并開(kāi)始使用它即可。

cJSON 是用 ANSI C (C89) 編寫的,以便支持盡可能多的平臺(tái)和編譯器。

CMake

With CMake, cJSON supports a full blown build system. This way you get the most features. CMake with an equal or higher version than 2.8.5 is supported. With CMake it is recommended to do an out of tree build, meaning the compiled files are put in a directory separate from the source files. So in order to build cJSON with CMake on a Unix platform, make a build directory and run CMake inside it.

使用 CMake,cJSON 支持完整的構(gòu)建系統(tǒng)。 這樣您就可以獲得最多的功能。 支持版本等于或高于 2.8.5 的 CMake。 使用 CMake 建議進(jìn)行樹(shù)外構(gòu)建,這意味著編譯后的文件放在與源文件不同的目錄中。 因此,為了在 Unix 平臺(tái)上使用 CMake 構(gòu)建 cJSON,創(chuàng)建一個(gè)構(gòu)建目錄并在其中運(yùn)行 CMake。

mkdir build cd build cmake ..

This will create a Makefile and a bunch of other files. You can then compile it:

這將創(chuàng)建一個(gè) Makefile 和一堆其他文件。 然后你可以編譯它:

make

And install it with make install if you want. By default it installs the headers /usr/local/include/cjson and the libraries to /usr/local/lib. It also installs files for pkg-config to make it easier to detect and use an existing installation of CMake. And it installs CMake config files, that can be used by other CMake based projects to discover the library.

You can change the build process with a list of different options that you can pass to CMake. Turn them on with On and off with Off:

如果需要,可以使用 make install 安裝它。 默認(rèn)情況下,它將頭文件 /usr/local/include/cjson 和庫(kù)安裝到 /usr/local/lib。 它還為 pkg-config 安裝文件,以便更容易檢測(cè)和使用現(xiàn)有的 CMake 安裝。 它會(huì)安裝 CMake 配置文件,其他基于 CMake 的項(xiàng)目可以使用這些文件來(lái)發(fā)現(xiàn)庫(kù)。

您可以使用可以傳遞給 CMake 的不同選項(xiàng)列表來(lái)更改構(gòu)建過(guò)程。 用 On 打開(kāi)它們,用 Off 關(guān)閉它們:

  • DENABLE_CJSON_TEST=On: Enable building the tests. (on by default)
  • DENABLE_CJSON_UTILS=On: Enable building cJSON_Utils. (off by default)
  • DENABLE_TARGET_EXPORT=On: Enable the export of CMake targets. Turn off if it makes problems. (on by default)
  • DENABLE_CUSTOM_COMPILER_FLAGS=On: Enable custom compiler flags (currently for Clang, GCC and MSVC). Turn off if it makes problems. (on by default)
  • DENABLE_VALGRIND=On: Run tests with valgrind. (off by default)
  • DENABLE_SANITIZERS=On: Compile cJSON with AddressSanitizer and UndefinedBehaviorSanitizer enabled (if possible). (off by default)
  • DENABLE_SAFE_STACK: Enable the SafeStack instrumentation pass. Currently only works with the Clang compiler. (off by default)
  • DBUILD_SHARED_LIBS=On: Build the shared libraries. (on by default)
  • DBUILD_SHARED_AND_STATIC_LIBS=On: Build both shared and static libraries. (off by default)
  • DCMAKE_INSTALL_PREFIX=/usr: Set a prefix for the installation.
  • DENABLE_LOCALES=On: Enable the usage of localeconv method. ( on by default )
  • DCJSON_OVERRIDE_BUILD_SHARED_LIBS=On: Enable overriding the value of BUILD_SHARED_LIBS with -DCJSON_BUILD_SHARED_LIBS.
  • DENABLE_CJSON_VERSION_SO: Enable cJSON so version. ( on by default )
    If you are packaging cJSON for a distribution of Linux, you would probably take these steps for example:
mkdir build cd build cmake .. -DENABLE_CJSON_UTILS=On -DENABLE_CJSON_TEST=Off -DCMAKE_INSTALL_PREFIX=/usr make make DESTDIR=$pkgdir install

On Windows CMake is usually used to create a Visual Studio solution file by running it inside the Developer Command Prompt for Visual Studio, for exact steps follow the official documentation from CMake and Microsoft and use the online search engine of your choice. The descriptions of the the options above still generally apply, although not all of them work on Windows.

在 Windows 上,CMake 通常用于通過(guò)在 Visual Studio 的開(kāi)發(fā)人員命令提示符中運(yùn)行它來(lái)創(chuàng)建 Visual Studio 解決方案文件,具體步驟請(qǐng)遵循 CMake 和 Microsoft 的官方文檔并使用您選擇的在線搜索引擎。 上述選項(xiàng)的描述仍然普遍適用,盡管并非所有選項(xiàng)都適用于 Windows。

Makefile

NOTE: This Method is deprecated. Use CMake if at all possible. Makefile support is limited to fixing bugs.

If you don’t have CMake available, but still have GNU make. You can use the makefile to build cJSON:

Run this command in the directory with the source code and it will automatically compile static and shared libraries and a little test program (not the full test suite).

注意:此方法已棄用。 盡可能使用 CMake。 Makefile 支持僅限于修復(fù)錯(cuò)誤。

如果您沒(méi)有可用的 CMake,但仍有 GNU make。 您可以使用 makefile 構(gòu)建 cJSON:

在包含源代碼的目錄中運(yùn)行此命令,它將自動(dòng)編譯靜態(tài)和共享庫(kù)以及一個(gè)小測(cè)試程序(不是完整的測(cè)試套件)。

make all

If you want, you can install the compiled library to your system using make install. By default it will install the headers in /usr/local/include/cjson and the libraries in /usr/local/lib. But you can change this behavior by setting the PREFIX and DESTDIR variables: make PREFIX=/usr DESTDIR=temp install. And uninstall them with: make PREFIX=/usr DESTDIR=temp uninstall.

如果需要,可以使用 make install 將編譯后的庫(kù)安裝到系統(tǒng)中。 默認(rèn)情況下,它會(huì)將頭文件安裝在 /usr/local/include/cjson 中,并將庫(kù)安裝在 /usr/local/lib 中。 但是您可以通過(guò)設(shè)置 PREFIX 和 DESTDIR 變量來(lái)更改此行為:make PREFIX=/usr DESTDIR=temp install。 并使用以下命令卸載它們:make PREFIX=/usr DESTDIR=temp uninstall。

Vcpkg

You can download and install cJSON using the vcpkg dependency manager:

您可以使用 vcpkg 依賴管理器下載并安裝 cJSON:

git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install vcpkg install cjson

The cJSON port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

vcpkg 中的 cJSON 端口由 Microsoft 團(tuán)隊(duì)成員和社區(qū)貢獻(xiàn)者保持最新。 如果版本過(guò)期,請(qǐng)?jiān)?vcpkg 存儲(chǔ)庫(kù)上創(chuàng)建問(wèn)題或拉取請(qǐng)求。

Including cJSON

If you installed it via CMake or the Makefile, you can include cJSON like this:

如果你通過(guò) CMake 或 Makefile 安裝它,你可以像這樣包含 cJSON:

#include <cjson/cJSON.h>

Data Structure

cJSON represents JSON data using the cJSON struct data type:

cJSON 使用 cJSON 結(jié)構(gòu)體數(shù)據(jù)類型來(lái)表示 JSON 數(shù)據(jù):

/* The cJSON structure: */ typedef struct cJSON {struct cJSON *next;struct cJSON *prev;struct cJSON *child;int type;char *valuestring;/* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */int valueint;double valuedouble;char *string; } cJSON;

An item of this type represents a JSON value. The type is stored in type as a bit-flag (this means that you cannot find out the type by just comparing the value of type).

To check the type of an item, use the corresponding cJSON_Is… function. It does a NULL check followed by a type check and returns a boolean value if the item is of this type.

The type can be one of the following:

此類型的項(xiàng)目表示 JSON 值。 類型作為位標(biāo)志存儲(chǔ)在類型中(這意味著您無(wú)法僅通過(guò)比較類型的值來(lái)找出類型)。

要檢查項(xiàng)目的類型,請(qǐng)使用相應(yīng)的 cJSON_Is… 函數(shù)。 它先進(jìn)行 NULL 檢查,然后進(jìn)行類型檢查,如果項(xiàng)目屬于這種類型,則返回一個(gè)布爾值。

類型可以是以下之一:

  • cJSON_Invalid (check with cJSON_IsInvalid): Represents an invalid item that doesn’t contain any value. You automatically have this type if you set the item to all zero bytes.
  • cJSON_False (check with cJSON_IsFalse): Represents a false boolean value. You can also check for boolean values in general with cJSON_IsBool.
  • cJSON_True (check with cJSON_IsTrue): Represents a true boolean value. You can also check for boolean values in general with cJSON_IsBool.
  • cJSON_NULL (check with cJSON_IsNull): Represents a null value.
  • cJSON_Number (check with cJSON_IsNumber): Represents a number value. The value is stored as a double in valuedouble and also in valueint. If the number is outside of the range of an integer, INT_MAX or INT_MIN are used for valueint.
  • cJSON_String (check with cJSON_IsString): Represents a string value. It is stored in the form of a zero terminated string in valuestring.
  • cJSON_Array (check with cJSON_IsArray): Represent an array value. This is implemented by pointing child to a linked list of cJSON items that represent the values in the array. The elements are linked together using next and prev, where the first element has prev.next == NULL and the last element next == NULL.
  • cJSON_Object (check with cJSON_IsObject): Represents an object value. Objects are stored same way as an array, the only difference is that the items in the object store their keys in string.
  • cJSON_Raw (check with cJSON_IsRaw): Represents any kind of JSON that is stored as a zero terminated array of characters in valuestring. This can be used, for example, to avoid printing the same static JSON over and over again to save performance. cJSON will never create this type when parsing. Also note that cJSON doesn’t check if it is valid JSON.

  • cJSON_Invalid(使用 cJSON_IsInvalid 檢查):表示不包含任何值的無(wú)效項(xiàng)。如果您將項(xiàng)目設(shè)置為全零字節(jié),您將自動(dòng)擁有此類型。
  • cJSON_False(檢查 cJSON_IsFalse):表示一個(gè)假布爾值。您還可以使用 cJSON_IsBool 通常檢查布爾值。
  • cJSON_True(檢查 cJSON_IsTrue):表示一個(gè)真正的布爾值。您還可以使用 cJSON_IsBool 通常檢查布爾值。
  • cJSON_NULL(檢查 cJSON_IsNull):表示空值。
  • cJSON_Number(檢查 cJSON_IsNumber):表示一個(gè)數(shù)字值。該值作為雙精度值存儲(chǔ)在 valuedouble 和 valueint 中。如果數(shù)字超出整數(shù)范圍,則將 INT_MAX 或 INT_MIN 用于 valueint。
  • cJSON_String(檢查 cJSON_IsString):表示一個(gè)字符串值。它以 valuestring 中以零結(jié)尾的字符串的形式存儲(chǔ)。
  • cJSON_Array(檢查 cJSON_IsArray):表示一個(gè)數(shù)組值。這是通過(guò)將 child 指向表示數(shù)組中的值的 cJSON 項(xiàng)的鏈接列表來(lái)實(shí)現(xiàn)的。元素使用 next 和 prev 鏈接在一起,其中第一個(gè)元素具有 prev.next == NULL,最后一個(gè)元素具有 next == NULL。
  • cJSON_Object(檢查 cJSON_IsObject):表示一個(gè)對(duì)象值。對(duì)象的存儲(chǔ)方式與數(shù)組相同,唯一的區(qū)別是對(duì)象中的項(xiàng)目將它們的鍵存儲(chǔ)在字符串中。
  • cJSON_Raw(使用 cJSON_IsRaw 檢查):表示任何類型的 JSON,存儲(chǔ)為 valuestring 中以零結(jié)尾的字符數(shù)組。例如,這可以用來(lái)避免一遍又一遍地打印相同的靜態(tài) JSON 以節(jié)省性能。 cJSON 在解析時(shí)永遠(yuǎn)不會(huì)創(chuàng)建這種類型。另請(qǐng)注意,cJSON 不會(huì)檢查它是否是有效的 JSON。

Additionally there are the following two flags:

此外,還有以下兩個(gè)標(biāo)志:

  • cJSON_IsReference: Specifies that the item that child points to and/or valuestring is not owned by this item, it is only a reference. So cJSON_Delete and other functions will only deallocate this item, not its child/valuestring.

  • cJSON_StringIsConst: This means that string points to a constant string. This means that cJSON_Delete and other functions will not try to deallocate string.

  • cJSON_IsReference:指定 child 指向的項(xiàng)目和/或 valuestring 不屬于該項(xiàng)目,它只是一個(gè)引用。 所以 cJSON_Delete 和其他函數(shù)只會(huì)釋放這個(gè) item,而不是它的 child/valuestring。

  • cJSON_StringIsConst:這意味著字符串指向一個(gè)常量字符串。 這意味著 cJSON_Delete 和其他函數(shù)不會(huì)嘗試釋放字符串。

Working with the data structure 使用數(shù)據(jù)結(jié)構(gòu)

For every value type there is a cJSON_Create… function that can be used to create an item of that type. All of these will allocate a cJSON struct that can later be deleted with cJSON_Delete. Note that you have to delete them at some point, otherwise you will get a memory leak.
Important: If you have added an item to an array or an object already, you mustn’t delete it with cJSON_Delete. Adding it to an array or object transfers its ownership so that when that array or object is deleted, it gets deleted as well. You also could use cJSON_SetValuestring to change a cJSON_String’s valuestring, and you needn’t to free the previous valuestring manually.

對(duì)于每個(gè)值類型,都有一個(gè) cJSON_Create… 函數(shù)可用于創(chuàng)建該類型的項(xiàng)目。 所有這些都將分配一個(gè) cJSON 結(jié)構(gòu),以后可以使用 cJSON_Delete 刪除該結(jié)構(gòu)。 請(qǐng)注意,您必須在某些時(shí)候刪除它們,否則您會(huì)出現(xiàn)內(nèi)存泄漏。
重要提示:如果您已經(jīng)將項(xiàng)目添加到數(shù)組或?qū)ο笾?#xff0c;則不得使用 cJSON_Delete 將其刪除。 將其添加到數(shù)組或?qū)ο髸?huì)轉(zhuǎn)移其所有權(quán),因此當(dāng)刪除該數(shù)組或?qū)ο髸r(shí),它也會(huì)被刪除。 您也可以使用 cJSON_SetValuestring 來(lái)更改 cJSON_String 的 valuestring,并且您不需要手動(dòng)釋放以前的 valuestring。

Basic types

  • null is created with cJSON_CreateNull

  • booleans are created with cJSON_CreateTrue, cJSON_CreateFalse or cJSON_CreateBool

  • numbers are created with cJSON_CreateNumber. This will set both valuedouble and valueint. If the number is outside of the range of an integer, INT_MAX or INT_MIN are used for valueint

  • strings are created with cJSON_CreateString (copies the string) or with cJSON_CreateStringReference (directly points to the string. This means that valuestring won’t be deleted by cJSON_Delete and you are responsible for its lifetime, useful for constants)

  • 使用 cJSON_CreateNull 創(chuàng)建 null

  • 使用 cJSON_CreateTrue、cJSON_CreateFalse 或 cJSON_CreateBool 創(chuàng)建布爾值

  • 數(shù)字是用 cJSON_CreateNumber 創(chuàng)建的。 這將設(shè)置 valuedouble 和 valueint。 如果數(shù)字超出整數(shù)范圍,則使用 INT_MAX 或 INT_MIN 作為 valueint

  • 使用 cJSON_CreateString(復(fù)制字符串)或使用 cJSON_CreateStringReference(直接指向字符串。這意味著 valuestring 不會(huì)被 cJSON_Delete 刪除,并且您負(fù)責(zé)它的生命周期,對(duì)常量有用)創(chuàng)建字符串

Arrays

You can create an empty array with cJSON_CreateArray. cJSON_CreateArrayReference can be used to create an array that doesn’t “own” its content, so its content doesn’t get deleted by cJSON_Delete.

To add items to an array, use cJSON_AddItemToArray to append items to the end. Using cJSON_AddItemReferenceToArray an element can be added as a reference to another item, array or string. This means that cJSON_Delete will not delete that items child or valuestring properties, so no double frees are occurring if they are already used elsewhere. To insert items in the middle, use cJSON_InsertItemInArray. It will insert an item at the given 0 based index and shift all the existing items to the right.

If you want to take an item out of an array at a given index and continue using it, use cJSON_DetachItemFromArray, it will return the detached item, so be sure to assign it to a pointer, otherwise you will have a memory leak.

Deleting items is done with cJSON_DeleteItemFromArray. It works like cJSON_DetachItemFromArray, but deletes the detached item via cJSON_Delete.

You can also replace an item in an array in place. Either with cJSON_ReplaceItemInArray using an index or with cJSON_ReplaceItemViaPointer given a pointer to an element. cJSON_ReplaceItemViaPointer will return 0 if it fails. What this does internally is to detach the old item, delete it and insert the new item in its place.

To get the size of an array, use cJSON_GetArraySize. Use cJSON_GetArrayItem to get an element at a given index.

Because an array is stored as a linked list, iterating it via index is inefficient (O(n2)), so you can iterate over an array using the cJSON_ArrayForEach macro in O(n) time complexity.

您可以使用 cJSON_CreateArray 創(chuàng)建一個(gè)空數(shù)組。 cJSON_CreateArrayReference 可用于創(chuàng)建不“擁有”其內(nèi)容的數(shù)組,因此其內(nèi)容不會(huì)被 cJSON_Delete 刪除。

要將項(xiàng)目添加到數(shù)組,請(qǐng)使用 cJSON_AddItemToArray 將項(xiàng)目附加到末尾。使用 cJSON_AddItemReferenceToArray 可以將元素添加為對(duì)另一個(gè)項(xiàng)目、數(shù)組或字符串的引用。這意味著 cJSON_Delete 不會(huì)刪除該項(xiàng)目的子屬性或 valuestring 屬性,因此如果它們已在其他地方使用,則不會(huì)發(fā)生雙重釋放。要在中間插入項(xiàng)目,請(qǐng)使用 cJSON_InsertItemInArray。它將在給定的基于 0 的索引處插入一個(gè)項(xiàng)目,并將所有現(xiàn)有項(xiàng)目向右移動(dòng)。

如果要從給定索引處的數(shù)組中取出一個(gè)項(xiàng)目并繼續(xù)使用它,請(qǐng)使用 cJSON_DetachItemFromArray,它將返回分離的項(xiàng)目,因此請(qǐng)務(wù)必將其分配給指針,否則會(huì)出現(xiàn)內(nèi)存泄漏。

使用 cJSON_DeleteItemFromArray 刪除項(xiàng)目。它的工作方式類似于 cJSON_DetachItemFromArray,但通過(guò) cJSON_Delete 刪除分離的項(xiàng)目。

您還可以就地替換數(shù)組中的項(xiàng)目。使用 cJSON_ReplaceItemInArray 使用索引或使用 cJSON_ReplaceItemViaPointer 給定指向元素的指針。如果失敗,cJSON_ReplaceItemViaPointer 將返回 0。這在內(nèi)部所做的是分離舊項(xiàng)目,將其刪除并在其位置插入新項(xiàng)目。

要獲取數(shù)組的大小,請(qǐng)使用 cJSON_GetArraySize。使用 cJSON_GetArrayItem 獲取給定索引處的元素。

因?yàn)閿?shù)組存儲(chǔ)為鏈表,所以通過(guò)索引對(duì)其進(jìn)行迭代是低效的 (O(n2)),因此您可以使用 cJSON_ArrayForEach 宏以 O(n) 的時(shí)間復(fù)雜度迭代數(shù)組。

Objects

You can create an empty object with cJSON_CreateObject. cJSON_CreateObjectReference can be used to create an object that doesn’t “own” its content, so its content doesn’t get deleted by cJSON_Delete.

To add items to an object, use cJSON_AddItemToObject. Use cJSON_AddItemToObjectCS to add an item to an object with a name that is a constant or reference (key of the item, string in the cJSON struct), so that it doesn’t get freed by cJSON_Delete. Using cJSON_AddItemReferenceToArray an element can be added as a reference to another object, array or string. This means that cJSON_Delete will not delete that items child or valuestring properties, so no double frees are occurring if they are already used elsewhere.

If you want to take an item out of an object, use cJSON_DetachItemFromObjectCaseSensitive, it will return the detached item, so be sure to assign it to a pointer, otherwise you will have a memory leak.

Deleting items is done with cJSON_DeleteItemFromObjectCaseSensitive. It works like cJSON_DetachItemFromObjectCaseSensitive followed by cJSON_Delete.

You can also replace an item in an object in place. Either with cJSON_ReplaceItemInObjectCaseSensitive using a key or with cJSON_ReplaceItemViaPointer given a pointer to an element. cJSON_ReplaceItemViaPointer will return 0 if it fails. What this does internally is to detach the old item, delete it and insert the new item in its place.

To get the size of an object, you can use cJSON_GetArraySize, this works because internally objects are stored as arrays.

If you want to access an item in an object, use cJSON_GetObjectItemCaseSensitive.

To iterate over an object, you can use the cJSON_ArrayForEach macro the same way as for arrays.

cJSON also provides convenient helper functions for quickly creating a new item and adding it to an object, like cJSON_AddNullToObject. They return a pointer to the new item or NULL if they failed.

您可以使用 cJSON_CreateObject 創(chuàng)建一個(gè)空對(duì)象。 cJSON_CreateObjectReference 可用于創(chuàng)建不“擁有”其內(nèi)容的對(duì)象,因此其內(nèi)容不會(huì)被 cJSON_Delete 刪除。

要將項(xiàng)目添加到對(duì)象,請(qǐng)使用 cJSON_AddItemToObject。使用 cJSON_AddItemToObjectCS 將項(xiàng)目添加到名稱為常量或引用的對(duì)象(項(xiàng)目的鍵,cJSON 結(jié)構(gòu)中的字符串),這樣它就不會(huì)被 cJSON_Delete 釋放。使用 cJSON_AddItemReferenceToArray 可以將元素添加為對(duì)另一個(gè)對(duì)象、數(shù)組或字符串的引用。這意味著 cJSON_Delete 不會(huì)刪除該項(xiàng)目的子屬性或 valuestring 屬性,因此如果它們已在其他地方使用,則不會(huì)發(fā)生雙重釋放。

如果你想從一個(gè)對(duì)象中取出一個(gè)item,使用cJSON_DetachItemFromObjectCaseSensitive,它會(huì)返回分離后的item,所以一定要給它賦值給一個(gè)指針,否則會(huì)出現(xiàn)內(nèi)存泄漏。

使用 cJSON_DeleteItemFromObjectCaseSensitive 刪除項(xiàng)目。它的工作方式類似于 cJSON_DetachItemFromObjectCaseSensitive 后跟 cJSON_Delete。

您還可以就地替換對(duì)象中的項(xiàng)目。使用 cJSON_ReplaceItemInObjectCaseSensitive 使用鍵或使用 cJSON_ReplaceItemViaPointer 給定指向元素的指針。如果失敗,cJSON_ReplaceItemViaPointer 將返回 0。這在內(nèi)部所做的是分離舊項(xiàng)目,將其刪除并在其位置插入新項(xiàng)目。

要獲取對(duì)象的大小,可以使用 cJSON_GetArraySize,這是因?yàn)閮?nèi)部對(duì)象存儲(chǔ)為數(shù)組。

如果要訪問(wèn)對(duì)象中的項(xiàng)目,請(qǐng)使用 cJSON_GetObjectItemCaseSensitive。

要迭代對(duì)象,您可以使用 cJSON_ArrayForEach 宏,方法與數(shù)組相同。

cJSON 還提供了方便的幫助函數(shù),用于快速創(chuàng)建新項(xiàng)目并將其添加到對(duì)象中,例如 cJSON_AddNullToObject。它們返回指向新項(xiàng)目的指針,如果失敗則返回 NULL。

Parsing JSON 解析JSON串

Given some JSON in a zero terminated string, you can parse it with cJSON_Parse.

給定零終止字符串中的一些 JSON,您可以使用 cJSON_Parse 對(duì)其進(jìn)行解析。

cJSON *json = cJSON_Parse(string);

Given some JSON in a string (whether zero terminated or not), you can parse it with cJSON_ParseWithLength.

給定字符串中的一些 JSON(無(wú)論是否以零結(jié)尾),您可以使用 cJSON_ParseWithLength 對(duì)其進(jìn)行解析。

cJSON *json = cJSON_ParseWithLength(string, buffer_length);

It will parse the JSON and allocate a tree of cJSON items that represents it. Once it returns, you are fully responsible for deallocating it after use with cJSON_Delete.

The allocator used by cJSON_Parse is malloc and free by default but can be changed (globally) with cJSON_InitHooks.

If an error occurs a pointer to the position of the error in the input string can be accessed using cJSON_GetErrorPtr. Note though that this can produce race conditions in multithreading scenarios, in that case it is better to use cJSON_ParseWithOpts with return_parse_end. By default, characters in the input string that follow the parsed JSON will not be considered as an error.

If you want more options, use cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated). return_parse_end returns a pointer to the end of the JSON in the input string or the position that an error occurs at (thereby replacing cJSON_GetErrorPtr in a thread safe way). require_null_terminated, if set to 1 will make it an error if the input string contains data after the JSON.

If you want more options giving buffer length, use cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated).

它將解析 JSON 并分配代表它的 cJSON 項(xiàng)目樹(shù)。一旦它返回,您將完全負(fù)責(zé)在與 cJSON_Delete 一起使用后釋放它。

cJSON_Parse 使用的分配器是 malloc 并且默認(rèn)情況下是釋放的,但可以使用 cJSON_InitHooks (全局)更改。

如果發(fā)生錯(cuò)誤,則可以使用 cJSON_GetErrorPtr 訪問(wèn)指向輸入字符串中錯(cuò)誤位置的指針。請(qǐng)注意,盡管這可能會(huì)在多線程場(chǎng)景中產(chǎn)生競(jìng)爭(zhēng)條件,但在這種情況下,最好將 cJSON_ParseWithOpts 與 return_parse_end 一起使用。默認(rèn)情況下,解析后的 JSON 后面的輸入字符串中的字符不會(huì)被視為錯(cuò)誤。

如果您需要更多選項(xiàng),請(qǐng)使用 cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated)。 return_parse_end 返回一個(gè)指針,指向輸入字符串中 JSON 的結(jié)尾或發(fā)生錯(cuò)誤的位置(從而以線程安全的方式替換 cJSON_GetErrorPtr)。 require_null_terminated,如果設(shè)置為 1,如果輸入字符串包含 JSON 之后的數(shù)據(jù),則會(huì)出錯(cuò)。

如果您想要更多選項(xiàng)來(lái)提供緩沖區(qū)長(zhǎng)度,請(qǐng)使用 cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated)。

Printing JSON 打印(遍歷)JSON串

Given a tree of cJSON items, you can print them as a string using cJSON_Print.

char *string = cJSON_Print(json);

It will allocate a string and print a JSON representation of the tree into it. Once it returns, you are fully responsible for deallocating it after use with your allocator. (usually free, depends on what has been set with cJSON_InitHooks).

cJSON_Print will print with whitespace for formatting. If you want to print without formatting, use cJSON_PrintUnformatted.

If you have a rough idea of how big your resulting string will be, you can use cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt). fmt is a boolean to turn formatting with whitespace on and off. prebuffer specifies the first buffer size to use for printing. cJSON_Print currently uses 256 bytes for its first buffer size. Once printing runs out of space, a new buffer is allocated and the old gets copied over before printing is continued.

These dynamic buffer allocations can be completely avoided by using cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format). It takes a buffer to a pointer to print to and its length. If the length is reached, printing will fail and it returns 0. In case of success, 1 is returned. Note that you should provide 5 bytes more than is actually needed, because cJSON is not 100% accurate in estimating if the provided memory is enough.

它將分配一個(gè)字符串并將樹(shù)的 JSON 表示打印到其中。一旦它返回,您將完全負(fù)責(zé)在使用分配器后釋放它。 (通常是釋放的,取決于 cJSON_InitHooks 的設(shè)置)。

cJSON_Print 將打印帶有空格以進(jìn)行格式化。如果要在不格式化的情況下打印,請(qǐng)使用 cJSON_PrintUnformatted。

如果您大致了解生成的字符串有多大,可以使用 cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt)。 fmt 是一個(gè)布爾值,用于打開(kāi)和關(guān)閉空格格式。 prebuffer 指定用于打印的第一個(gè)緩沖區(qū)大小。 cJSON_Print 當(dāng)前使用 256 字節(jié)作為其第一個(gè)緩沖區(qū)大小。一旦打印空間用完,就會(huì)分配一個(gè)新的緩沖區(qū),并在繼續(xù)打印之前復(fù)制舊的緩沖區(qū)。

使用 cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format) 可以完全避免這些動(dòng)態(tài)緩沖區(qū)分配。它需要一個(gè)緩沖區(qū)指向要打印到的指針及其長(zhǎng)度。如果達(dá)到長(zhǎng)度,則打印失敗并返回 0。如果成功,則返回 1。請(qǐng)注意,您應(yīng)該比實(shí)際需要多提供 5 個(gè)字節(jié),因?yàn)?cJSON 在估計(jì)提供的內(nèi)存是否足夠時(shí)并不是 100% 準(zhǔn)確的。

Example 示例

In this example we want to build and parse the following JSON:

在此示例中,我們要構(gòu)建和解析以下 JSON:

{"name": "Awesome 4K","resolutions": [{"width": 1280,"height": 720},{"width": 1920,"height": 1080},{"width": 3840,"height": 2160}] }

Printing 打印(序列化)發(fā)送端

Let’s build the above JSON and print it to a string:

讓我們構(gòu)建上面的 JSON 并將其打印為字符串:

//create a monitor with a list of supported resolutions 使用支持的分辨率列表創(chuàng)建監(jiān)視器 //NOTE: Returns a heap allocated string, you are required to free it after use. 注意:返回一個(gè)堆分配的字符串,您需要在使用后釋放它。 char *create_monitor(void) {const unsigned int resolution_numbers[3][2] = {{1280, 720},{1920, 1080},{3840, 2160}};char *string = NULL;cJSON *name = NULL;cJSON *resolutions = NULL;cJSON *resolution = NULL;cJSON *width = NULL;cJSON *height = NULL;size_t index = 0;cJSON *monitor = cJSON_CreateObject();if (monitor == NULL){goto end;}name = cJSON_CreateString("Awesome 4K");if (name == NULL){goto end;}/* after creation was successful, immediately add it to the monitor,* thereby transferring ownership of the pointer to it 創(chuàng)建成功后,立即將其添加到監(jiān)視器中,從而將指針的所有權(quán)轉(zhuǎn)移給它*/cJSON_AddItemToObject(monitor, "name", name);resolutions = cJSON_CreateArray();if (resolutions == NULL){goto end;}cJSON_AddItemToObject(monitor, "resolutions", resolutions);for (index = 0; index < (sizeof(resolution_numbers) / (2 * sizeof(int))); ++index){resolution = cJSON_CreateObject();if (resolution == NULL){goto end;}cJSON_AddItemToArray(resolutions, resolution);width = cJSON_CreateNumber(resolution_numbers[index][0]);if (width == NULL){goto end;}cJSON_AddItemToObject(resolution, "width", width);height = cJSON_CreateNumber(resolution_numbers[index][1]);if (height == NULL){goto end;}cJSON_AddItemToObject(resolution, "height", height);}string = cJSON_Print(monitor);if (string == NULL){fprintf(stderr, "Failed to print monitor.\n");}end:cJSON_Delete(monitor);return string; }

Alternatively we can use the cJSON_Add…ToObject helper functions to make our lives a little easier:

或者,我們可以使用 cJSON_Add…ToObject 輔助函數(shù)讓我們的生活更輕松一些:(簡(jiǎn)化代碼)

//NOTE: Returns a heap allocated string, you are required to free it after use. 注意:返回一個(gè)堆分配的字符串,您需要在使用后釋放它。 char *create_monitor_with_helpers(void) {const unsigned int resolution_numbers[3][2] = {{1280, 720},{1920, 1080},{3840, 2160}};char *string = NULL;cJSON *resolutions = NULL;size_t index = 0;cJSON *monitor = cJSON_CreateObject();if (cJSON_AddStringToObject(monitor, "name", "Awesome 4K") == NULL){goto end;}resolutions = cJSON_AddArrayToObject(monitor, "resolutions");if (resolutions == NULL){goto end;}for (index = 0; index < (sizeof(resolution_numbers) / (2 * sizeof(int))); ++index){cJSON *resolution = cJSON_CreateObject();if (cJSON_AddNumberToObject(resolution, "width", resolution_numbers[index][0]) == NULL){goto end;}if (cJSON_AddNumberToObject(resolution, "height", resolution_numbers[index][1]) == NULL){goto end;}cJSON_AddItemToArray(resolutions, resolution);}string = cJSON_Print(monitor);if (string == NULL){fprintf(stderr, "Failed to print monitor.\n");}end:cJSON_Delete(monitor);return string; }

vs上測(cè)試

#pragma warning(disable : 4996) #include <stdio.h> //#include <string.h> #include "cJSON.h"//create a monitor with a list of supported resolutions //NOTE: Returns a heap allocated string, you are required to free it after use. char* create_monitor(void) {const unsigned int resolution_numbers[3][2] = {{1280, 720},{1920, 1080},{3840, 2160}};char* string = NULL;cJSON* name = NULL;cJSON* resolutions = NULL;cJSON* resolution = NULL;cJSON* width = NULL;cJSON* height = NULL;size_t index = 0;cJSON* monitor = cJSON_CreateObject();if (monitor == NULL){goto end;}name = cJSON_CreateString("Awesome 4K");if (name == NULL){goto end;}/* after creation was successful, immediately add it to the monitor,* thereby transferring ownership of the pointer to it */cJSON_AddItemToObject(monitor, "name", name);resolutions = cJSON_CreateArray();if (resolutions == NULL){goto end;}cJSON_AddItemToObject(monitor, "resolutions", resolutions);for (index = 0; index < (sizeof(resolution_numbers) / (2 * sizeof(int))); ++index){resolution = cJSON_CreateObject();if (resolution == NULL){goto end;}cJSON_AddItemToArray(resolutions, resolution);width = cJSON_CreateNumber(resolution_numbers[index][0]);if (width == NULL){goto end;}cJSON_AddItemToObject(resolution, "width", width);height = cJSON_CreateNumber(resolution_numbers[index][1]);if (height == NULL){goto end;}cJSON_AddItemToObject(resolution, "height", height);}string = cJSON_Print(monitor);if (string == NULL){fprintf(stderr, "Failed to print monitor.\n");}end:cJSON_Delete(monitor);return string; }char cameraID_[64] = "DS-2XA7247F-IZS20211230AACHJ33724864"; char algorithmName_[64] = "安全帽算法"; int algorithmCategory_ = 0; char alarmMessage_[1024] = "NULL"; char alarmImage_[1024] = "/capture_picture/DS-2XA7247F-IZS20211230AACHJ33724864_202203290910102233.jpg"; char alarmTime_[64] = "2022-02-01 10:12:01";char* create_alarm_info(void) {char* string = NULL;cJSON* cameraID = NULL;cJSON* algorithmName = NULL;cJSON* algorithmCategory = NULL;cJSON* alarmMessage = NULL;cJSON* alarmImage = NULL;cJSON* alarmTime = NULL;cJSON* alarm_info = cJSON_CreateObject();if (alarm_info == NULL){goto end;}//1 cameraIDcameraID = cJSON_CreateString(cameraID_);if (cameraID == NULL){goto end;}cJSON_AddItemToObject(alarm_info, "cameraID", cameraID);//2 algorithmNamealgorithmName = cJSON_CreateString(algorithmName_);if (algorithmName == NULL){goto end;}cJSON_AddItemToObject(alarm_info, "algorithmName", algorithmName);//3 algorithmCategoryalgorithmCategory = cJSON_CreateNumber(algorithmCategory_);if (algorithmCategory == NULL){goto end;}cJSON_AddItemToObject(alarm_info, "algorithmCategory", algorithmCategory);//4 alarmMessagealarmMessage = cJSON_CreateString(alarmMessage_);if (alarmMessage == NULL){goto end;}cJSON_AddItemToObject(alarm_info, "alarmMessage", alarmMessage);//5 alarmImagealarmImage = cJSON_CreateString(alarmImage_);if (alarmImage == NULL){goto end;}cJSON_AddItemToObject(alarm_info, "alarmImage", alarmImage);//6 alarmTimealarmTime = cJSON_CreateString(alarmTime_);if (alarmTime == NULL){goto end;}cJSON_AddItemToObject(alarm_info, "alarmTime", alarmTime);string = cJSON_Print(alarm_info);if (string == NULL){fprintf(stderr, "Failed to print alarm_info.\n");}end:cJSON_Delete(alarm_info);return string; }int main() {char* s = create_monitor();printf("%s\n", s);free(s);printf("%s\n", s); //亂碼,說(shuō)明函數(shù)返回的指針是malloc開(kāi)辟的空間,用完指針必須free,否則可能導(dǎo)致內(nèi)存溢出char* y = create_alarm_info();printf("%s\n", y);free(y);printf("%s\n", y);printf("%s\n", cameraID_);return 0; }

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

{"name": "Awesome 4K","resolutions": [{"width": 1280,"height": 720}, {"width": 1920,"height": 1080}, {"width": 3840,"height": 2160}] } 葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺€ {"cameraID": "DS-2XA7247F-IZS20211230AACHJ33724864","algorithmName": "安全帽算法","algorithmCategory": 0,"alarmMessage": "NULL","alarmImage": "/capture_picture/DS-2XA7247F-IZS20211230AACHJ33724864_202203290910102233.jpg","alarmTime": "2022-02-01 10:12:01" } 葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺屯屯屯? DS-2XA7247F-IZS20211230AACHJ33724864

Parsing 解析(反序列化)接收端

In this example we will parse a JSON in the above format and check if the monitor supports a Full HD resolution while printing some diagnostic output:

在此示例中,我們將解析上述格式的 JSON,并在打印一些診斷輸出時(shí)檢查顯示器是否支持全高清分辨率:

/* return 1 if the monitor supports full hd, 0 otherwise 如果顯示器支持全高清則返回 1,否則返回 0 */ int supports_full_hd(const char * const monitor) {const cJSON *resolution = NULL;const cJSON *resolutions = NULL;const cJSON *name = NULL;int status = 0;cJSON *monitor_json = cJSON_Parse(monitor);if (monitor_json == NULL){const char *error_ptr = cJSON_GetErrorPtr();if (error_ptr != NULL){fprintf(stderr, "Error before: %s\n", error_ptr);}status = 0;goto end;}name = cJSON_GetObjectItemCaseSensitive(monitor_json, "name");if (cJSON_IsString(name) && (name->valuestring != NULL)){printf("Checking monitor \"%s\"\n", name->valuestring);}resolutions = cJSON_GetObjectItemCaseSensitive(monitor_json, "resolutions");cJSON_ArrayForEach(resolution, resolutions){cJSON *width = cJSON_GetObjectItemCaseSensitive(resolution, "width");cJSON *height = cJSON_GetObjectItemCaseSensitive(resolution, "height");if (!cJSON_IsNumber(width) || !cJSON_IsNumber(height)){status = 0;goto end;}if ((width->valuedouble == 1920) && (height->valuedouble == 1080)){status = 1;goto end;}}end:cJSON_Delete(monitor_json);return status; }

Note that there are no NULL checks except for the result of cJSON_Parse because cJSON_GetObjectItemCaseSensitive checks for NULL inputs already, so a NULL value is just propagated and cJSON_IsNumber and cJSON_IsString return 0 if the input is NULL.

請(qǐng)注意,除了 cJSON_Parse 的結(jié)果之外沒(méi)有任何 NULL 檢查,因?yàn)?cJSON_GetObjectItemCaseSensitive 已經(jīng)檢查了 NULL 輸入,因此只是傳播 NULL 值,如果輸入為 NULL,則 cJSON_IsNumber 和 cJSON_IsString 返回 0。

VS上測(cè)試(略)

Caveats 注意事項(xiàng)

Zero Character

cJSON doesn’t support strings that contain the zero character ‘\0’ or \u0000. This is impossible with the current API because strings are zero terminated.

cJSON 不支持包含零字符 ‘\0’ 或 \u0000 的字符串。 這在當(dāng)前的 API 中是不可能的,因?yàn)樽址橇憬K止的。

Character Encoding

cJSON only supports UTF-8 encoded input. In most cases it doesn’t reject invalid UTF-8 as input though, it just propagates it through as is. As long as the input doesn’t contain invalid UTF-8, the output will always be valid UTF-8.

cJSON 僅支持 UTF-8 編碼輸入。 在大多數(shù)情況下,它不會(huì)拒絕無(wú)效的 UTF-8 作為輸入,它只是按原樣傳播它。 只要輸入不包含無(wú)效的 UTF-8,輸出將始終是有效的 UTF-8。

C Standard

cJSON is written in ANSI C (or C89, C90). If your compiler or C library doesn’t follow this standard, correct behavior is not guaranteed.

NOTE: ANSI C is not C++ therefore it shouldn’t be compiled with a C++ compiler. You can compile it with a C compiler and link it with your C++ code however. Although compiling with a C++ compiler might work, correct behavior is not guaranteed.

cJSON 是用 ANSI C(或 C89、C90)編寫的。 如果您的編譯器或 C 庫(kù)不遵循此標(biāo)準(zhǔn),則無(wú)法保證正確的行為。

注意:ANSI C 不是 C++,因此不應(yīng)使用 C++ 編譯器對(duì)其進(jìn)行編譯。 您可以使用 C 編譯器對(duì)其進(jìn)行編譯,然后將其與您的 C++ 代碼鏈接。 盡管使用 C++ 編譯器進(jìn)行編譯可能會(huì)起作用,但不能保證正確的行為。

Floating Point Numbers

cJSON does not officially support any double implementations other than IEEE754 double precision floating point numbers. It might still work with other implementations but bugs with these will be considered invalid.

The maximum length of a floating point literal that cJSON supports is currently 63 characters.

cJSON 不正式支持除 IEEE754 雙精度浮點(diǎn)數(shù)之外的任何雙精度實(shí)現(xiàn)。 它可能仍然適用于其他實(shí)現(xiàn),但這些錯(cuò)誤將被視為無(wú)效。

cJSON 支持的浮點(diǎn)文字的最大長(zhǎng)度目前為 63 個(gè)字符。

Deep Nesting Of Arrays And Objects 數(shù)組和對(duì)象的深度嵌套

cJSON doesn’t support arrays and objects that are nested too deeply because this would result in a stack overflow. To prevent this cJSON limits the depth to CJSON_NESTING_LIMIT which is 1000 by default but can be changed at compile time.

cJSON 不支持嵌套太深的數(shù)組和對(duì)象,因?yàn)檫@會(huì)導(dǎo)致堆棧溢出。 為了防止這種情況,cJSON 將深度限制為 CJSON_NESTING_LIMIT,默認(rèn)為 1000,但可以在編譯時(shí)更改。

Thread Safety

In general cJSON is not thread safe.

However it is thread safe under the following conditions:

cJSON_GetErrorPtr is never used (the return_parse_end parameter of cJSON_ParseWithOpts can be used instead)
cJSON_InitHooks is only ever called before using cJSON in any threads.
setlocale is never called before all calls to cJSON functions have returned.

一般來(lái)說(shuō),cJSON 不是線程安全的。

但是,它在以下條件下是線程安全的:

cJSON_GetErrorPtr 從不使用(可以使用 cJSON_ParseWithOpts 的 return_parse_end 參數(shù)代替)
cJSON_InitHooks 只會(huì)在任何線程中使用 cJSON 之前被調(diào)用。
在所有對(duì) cJSON 函數(shù)的調(diào)用都返回之前,永遠(yuǎn)不會(huì)調(diào)用 setlocale。

Case Sensitivity

When cJSON was originally created, it didn’t follow the JSON standard and didn’t make a distinction between uppercase and lowercase letters. If you want the correct, standard compliant, behavior, you need to use the CaseSensitive functions where available.

最初創(chuàng)建 cJSON 時(shí),它沒(méi)有遵循 JSON 標(biāo)準(zhǔn),也沒(méi)有區(qū)分大小寫字母。 如果您想要正確的、符合標(biāo)準(zhǔn)的行為,則需要在可用的情況下使用 CaseSensitive 函數(shù)。

Duplicate Object Members 重復(fù)的對(duì)象成員

cJSON supports parsing and printing JSON that contains objects that have multiple members with the same name. cJSON_GetObjectItemCaseSensitive however will always only return the first one.

cJSON 支持解析和打印包含具有多個(gè)同名成員的對(duì)象的 JSON。 但是,cJSON_GetObjectItemCaseSensitive 將始終只返回第一個(gè)。

總結(jié)

以上是生活随笔為你收集整理的cJSON使用教程(树外构建 out of tree build 概念)(组包概念)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

老熟女乱子伦 | 香蕉久久久久久av成人 | 美女扒开屁股让男人桶 | 国产精品无码一区二区三区不卡 | 免费观看又污又黄的网站 | 性生交大片免费看l | 亚洲国产欧美国产综合一区 | 青春草在线视频免费观看 | 超碰97人人做人人爱少妇 | 黑人大群体交免费视频 | 久久精品国产一区二区三区肥胖 | 色五月五月丁香亚洲综合网 | 日韩欧美中文字幕在线三区 | 国内精品久久久久久中文字幕 | 日韩人妻少妇一区二区三区 | 国产精品久久久久9999小说 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 无码人妻出轨黑人中文字幕 | 四虎永久在线精品免费网址 | 色窝窝无码一区二区三区色欲 | 日日摸日日碰夜夜爽av | 国产成人亚洲综合无码 | 一区二区三区乱码在线 | 欧洲 | 久久综合九色综合欧美狠狠 | 人妻aⅴ无码一区二区三区 | 免费无码午夜福利片69 | 无码av免费一区二区三区试看 | 熟女少妇在线视频播放 | 国产精品多人p群无码 | 亚洲精品综合一区二区三区在线 | 成年美女黄网站色大免费全看 | 国产亚洲欧美日韩亚洲中文色 | 精品无人区无码乱码毛片国产 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲成a人一区二区三区 | 国产一区二区三区精品视频 | 欧美精品在线观看 | 国内精品久久毛片一区二区 | 樱花草在线播放免费中文 | 日本精品人妻无码免费大全 | 中文字幕无码人妻少妇免费 | 国产色视频一区二区三区 | 欧美亚洲国产一区二区三区 | 国产精品久久久久9999小说 | 亚洲成av人片在线观看无码不卡 | 精品久久久中文字幕人妻 | 精品厕所偷拍各类美女tp嘘嘘 | 丰满少妇弄高潮了www | 成人精品视频一区二区 | 少妇性l交大片欧洲热妇乱xxx | 中文精品无码中文字幕无码专区 | 狂野欧美激情性xxxx | 强开小婷嫩苞又嫩又紧视频 | 亚洲一区二区三区在线观看网站 | 青青久在线视频免费观看 | 日韩成人一区二区三区在线观看 | 欧美 亚洲 国产 另类 | 国产黄在线观看免费观看不卡 | 久久国语露脸国产精品电影 | 99精品久久毛片a片 | 亚洲欧美日韩成人高清在线一区 | 亚洲一区二区三区国产精华液 | 久久人人97超碰a片精品 | 亚洲成色在线综合网站 | 精品厕所偷拍各类美女tp嘘嘘 | 欧洲极品少妇 | 精品国产av色一区二区深夜久久 | 国产99久久精品一区二区 | 日韩无码专区 | 无码av岛国片在线播放 | 久久精品无码一区二区三区 | 日韩 欧美 动漫 国产 制服 | 精品国偷自产在线视频 | 老司机亚洲精品影院无码 | 人人妻人人澡人人爽精品欧美 | 成熟妇人a片免费看网站 | 人人爽人人澡人人人妻 | 精品无码国产一区二区三区av | 国产精品高潮呻吟av久久4虎 | 欧美熟妇另类久久久久久不卡 | 暴力强奷在线播放无码 | 青草视频在线播放 | 久久精品女人的天堂av | 中文字幕乱码人妻二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 色欲av亚洲一区无码少妇 | 无码人妻久久一区二区三区不卡 | 久久久久人妻一区精品色欧美 | 成熟妇人a片免费看网站 | 亚洲熟女一区二区三区 | 国产在线一区二区三区四区五区 | 国产日产欧产精品精品app | 国产午夜亚洲精品不卡下载 | 久久久久久久人妻无码中文字幕爆 | 波多野结衣一区二区三区av免费 | 日韩欧美中文字幕在线三区 | 人妻互换免费中文字幕 | 中文字幕日韩精品一区二区三区 | 国精产品一品二品国精品69xx | 色一情一乱一伦一区二区三欧美 | 国产精品丝袜黑色高跟鞋 | 久久久久久久女国产乱让韩 | 亚洲国产欧美日韩精品一区二区三区 | 男人的天堂2018无码 | 久久熟妇人妻午夜寂寞影院 | 亚洲一区二区三区 | 久久久国产一区二区三区 | 国产精华av午夜在线观看 | 亲嘴扒胸摸屁股激烈网站 | 亚洲精品无码国产 | 精品无码av一区二区三区 | 久久精品女人天堂av免费观看 | 国内精品人妻无码久久久影院蜜桃 | 国语精品一区二区三区 | 亚洲精品午夜无码电影网 | 国内精品人妻无码久久久影院 | 男人扒开女人内裤强吻桶进去 | 国产精品资源一区二区 | 精品一区二区三区波多野结衣 | 熟妇女人妻丰满少妇中文字幕 | 无码中文字幕色专区 | 麻豆国产人妻欲求不满 | 精品亚洲成av人在线观看 | 精品人人妻人人澡人人爽人人 | 99视频精品全部免费免费观看 | 少妇厨房愉情理9仑片视频 | 国产女主播喷水视频在线观看 | 久久亚洲精品中文字幕无男同 | 高潮毛片无遮挡高清免费视频 | 大色综合色综合网站 | 奇米影视7777久久精品人人爽 | 天天综合网天天综合色 | 综合网日日天干夜夜久久 | 一本精品99久久精品77 | 装睡被陌生人摸出水好爽 | 亚洲国产欧美日韩精品一区二区三区 | 精品无人区无码乱码毛片国产 | 亚洲色大成网站www国产 | 精品国产麻豆免费人成网站 | 日本一本二本三区免费 | 人妻互换免费中文字幕 | 国产精品99爱免费视频 | 曰韩少妇内射免费播放 | 成人综合网亚洲伊人 | 国产精品无码久久av | 精品午夜福利在线观看 | 久久久久se色偷偷亚洲精品av | 国产xxx69麻豆国语对白 | 久青草影院在线观看国产 | 性色av无码免费一区二区三区 | 亚洲一区二区三区在线观看网站 | www成人国产高清内射 | 国产精品国产自线拍免费软件 | 7777奇米四色成人眼影 | 无码午夜成人1000部免费视频 | 亚洲成av人片在线观看无码不卡 | 熟妇人妻无码xxx视频 | 最近中文2019字幕第二页 | 国产熟妇高潮叫床视频播放 | 学生妹亚洲一区二区 | 久久久精品欧美一区二区免费 | 免费无码av一区二区 | 国产偷抇久久精品a片69 | 激情亚洲一区国产精品 | 夜夜高潮次次欢爽av女 | 亚洲欧洲中文日韩av乱码 | 精品一区二区不卡无码av | 久久无码专区国产精品s | 无码国产乱人伦偷精品视频 | 亚洲 激情 小说 另类 欧美 | 成人影院yy111111在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 国产精品高潮呻吟av久久4虎 | 人妻少妇精品久久 | 精品一区二区三区波多野结衣 | 色综合天天综合狠狠爱 | 欧美老妇交乱视频在线观看 | 亚洲精品一区二区三区在线观看 | 荫蒂添的好舒服视频囗交 | 国产精品久久久久久久影院 | 天堂亚洲免费视频 | 十八禁视频网站在线观看 | 国产精品永久免费视频 | 中文字幕中文有码在线 | 亚洲人成无码网www | 国产精品久久久久久亚洲毛片 | 国内精品久久毛片一区二区 | 日韩精品久久久肉伦网站 | 中文精品无码中文字幕无码专区 | 国产亚洲精品久久久久久久 | 日韩欧美中文字幕在线三区 | 亚洲日韩av一区二区三区四区 | 国精品人妻无码一区二区三区蜜柚 | 中国女人内谢69xxxx | 国产精品成人av在线观看 | 亚洲区欧美区综合区自拍区 | 亚洲综合在线一区二区三区 | 任你躁国产自任一区二区三区 | 日韩欧美群交p片內射中文 | 少妇无码av无码专区在线观看 | 中文字幕无线码 | 少妇厨房愉情理9仑片视频 | 欧洲美熟女乱又伦 | 狠狠色欧美亚洲狠狠色www | 亚洲欧洲日本综合aⅴ在线 | 亚洲第一无码av无码专区 | 乱中年女人伦av三区 | 人人妻人人澡人人爽欧美精品 | 国产精品免费大片 | 粗大的内捧猛烈进出视频 | 亚洲熟女一区二区三区 | 51国偷自产一区二区三区 | 成熟人妻av无码专区 | www成人国产高清内射 | 激情五月综合色婷婷一区二区 | 人妻少妇精品无码专区二区 | 最新版天堂资源中文官网 | 色综合久久88色综合天天 | 久久精品人人做人人综合 | 牲欲强的熟妇农村老妇女视频 | 久久亚洲精品中文字幕无男同 | 国产真实伦对白全集 | 性色欲网站人妻丰满中文久久不卡 | 欧美精品国产综合久久 | 成人免费视频在线观看 | 少妇邻居内射在线 | 国产精品久久久久影院嫩草 | 亚洲成av人在线观看网址 | 综合网日日天干夜夜久久 | 爽爽影院免费观看 | 成人片黄网站色大片免费观看 | 99国产欧美久久久精品 | 97久久超碰中文字幕 | 中文字幕人妻无码一区二区三区 | 中文字幕+乱码+中文字幕一区 | 亚洲精品国偷拍自产在线观看蜜桃 | 人妻夜夜爽天天爽三区 | 国精产品一品二品国精品69xx | 18精品久久久无码午夜福利 | 色噜噜亚洲男人的天堂 | 娇妻被黑人粗大高潮白浆 | а√资源新版在线天堂 | 图片区 小说区 区 亚洲五月 | 少妇高潮喷潮久久久影院 | 亚洲乱码中文字幕在线 | 人人爽人人澡人人人妻 | 欧美丰满少妇xxxx性 | 领导边摸边吃奶边做爽在线观看 | 无码av最新清无码专区吞精 | 中文字幕人妻无码一区二区三区 | 麻豆蜜桃av蜜臀av色欲av | 中国女人内谢69xxxx | 精品水蜜桃久久久久久久 | 亚洲日韩一区二区 | 人人妻人人藻人人爽欧美一区 | 伊人久久大香线焦av综合影院 | 日本丰满熟妇videos | 久久综合九色综合欧美狠狠 | 无码人妻丰满熟妇区五十路百度 | 大肉大捧一进一出视频出来呀 | 久久精品国产99精品亚洲 | 亚洲国产精品久久人人爱 | 国产网红无码精品视频 | 午夜精品一区二区三区的区别 | 激情五月综合色婷婷一区二区 | 奇米影视7777久久精品 | 极品嫩模高潮叫床 | 无码一区二区三区在线 | 久久综合九色综合欧美狠狠 | 波多野结衣 黑人 | 国产三级精品三级男人的天堂 | 伊在人天堂亚洲香蕉精品区 | 思思久久99热只有频精品66 | 午夜男女很黄的视频 | 国产无遮挡又黄又爽免费视频 | 无码毛片视频一区二区本码 | 日本欧美一区二区三区乱码 | 国产成人亚洲综合无码 | 亚洲aⅴ无码成人网站国产app | 国产午夜福利亚洲第一 | 久久久久亚洲精品中文字幕 | 亚洲 高清 成人 动漫 | 中文字幕亚洲情99在线 | 人人爽人人澡人人高潮 | 欧美日韩视频无码一区二区三 | 国产特级毛片aaaaaa高潮流水 | 国产后入清纯学生妹 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲日本一区二区三区在线 | 亚洲中文字幕成人无码 | 夜精品a片一区二区三区无码白浆 | 国产色在线 | 国产 | 极品尤物被啪到呻吟喷水 | 日日摸日日碰夜夜爽av | 丰腴饱满的极品熟妇 | 天堂а√在线地址中文在线 | 日本熟妇人妻xxxxx人hd | 日本熟妇大屁股人妻 | 老司机亚洲精品影院无码 | 欧美老人巨大xxxx做受 | 秋霞成人午夜鲁丝一区二区三区 | 在线成人www免费观看视频 | 无码任你躁久久久久久久 | 欧美肥老太牲交大战 | 中国大陆精品视频xxxx | 午夜性刺激在线视频免费 | 亚洲色在线无码国产精品不卡 | 国产精品亚洲一区二区三区喷水 | 鲁鲁鲁爽爽爽在线视频观看 | 人人澡人人透人人爽 | 亚洲一区二区观看播放 | 人妻少妇精品无码专区动漫 | 在线成人www免费观看视频 | 又湿又紧又大又爽a视频国产 | 麻豆国产人妻欲求不满 | 久久亚洲中文字幕精品一区 | 亚洲乱亚洲乱妇50p | 18禁止看的免费污网站 | 亚洲欧美国产精品专区久久 | 免费人成网站视频在线观看 | 日韩亚洲欧美精品综合 | 久久99热只有频精品8 | 一本大道久久东京热无码av | 国产精品二区一区二区aⅴ污介绍 | 性生交大片免费看女人按摩摩 | 久久成人a毛片免费观看网站 | 精品久久久久香蕉网 | 国产va免费精品观看 | 精品一区二区不卡无码av | 久久99精品国产麻豆 | 国产精品igao视频网 | 久久精品中文闷骚内射 | 成人免费视频视频在线观看 免费 | 久久精品国产日本波多野结衣 | 亚洲国产精品一区二区第一页 | 亚洲中文字幕av在天堂 | 久久精品国产一区二区三区 | 国产特级毛片aaaaaa高潮流水 | 国产熟妇另类久久久久 | 亚洲一区二区三区在线观看网站 | 一二三四社区在线中文视频 | 巨爆乳无码视频在线观看 | 国产精品va在线观看无码 | 亚洲成av人片在线观看无码不卡 | 国产手机在线αⅴ片无码观看 | 久久zyz资源站无码中文动漫 | 国产精品自产拍在线观看 | 99精品国产综合久久久久五月天 | 亚洲国产av美女网站 | 国产亚洲美女精品久久久2020 | 青青青爽视频在线观看 | 亚洲精品成人福利网站 | 欧美人与物videos另类 | 国产人妻精品一区二区三区不卡 | 蜜臀av无码人妻精品 | 国产综合色产在线精品 | 无码人妻精品一区二区三区不卡 | 国产av一区二区精品久久凹凸 | 成熟妇人a片免费看网站 | 无码午夜成人1000部免费视频 | 国产精品高潮呻吟av久久 | 国产乱人无码伦av在线a | 人人妻人人澡人人爽欧美一区 | 偷窥日本少妇撒尿chinese | 午夜精品久久久内射近拍高清 | 国产精品视频免费播放 | 亲嘴扒胸摸屁股激烈网站 | 人妻aⅴ无码一区二区三区 | 99在线 | 亚洲 | 国产内射老熟女aaaa | 秋霞成人午夜鲁丝一区二区三区 | 一本久道高清无码视频 | 丰满肥臀大屁股熟妇激情视频 | 欧美喷潮久久久xxxxx | 婷婷色婷婷开心五月四房播播 | 午夜福利电影 | 少妇无码av无码专区在线观看 | 亚洲熟妇色xxxxx欧美老妇y | 久久伊人色av天堂九九小黄鸭 | 日本精品高清一区二区 | 丰满少妇人妻久久久久久 | 国产精品无码永久免费888 | 国产精品毛片一区二区 | 日本饥渴人妻欲求不满 | 午夜嘿嘿嘿影院 | 无码免费一区二区三区 | 日本免费一区二区三区最新 | 亚洲阿v天堂在线 | 东京热一精品无码av | 亚洲精品一区三区三区在线观看 | 搡女人真爽免费视频大全 | ass日本丰满熟妇pics | 国产无遮挡又黄又爽免费视频 | 久久亚洲a片com人成 | 日韩 欧美 动漫 国产 制服 | 久热国产vs视频在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 精品无人区无码乱码毛片国产 | 国产熟女一区二区三区四区五区 | 亚洲精品一区二区三区婷婷月 | 欧洲vodafone精品性 | 性欧美熟妇videofreesex | 亚洲色偷偷男人的天堂 | 无码av免费一区二区三区试看 | 99精品久久毛片a片 | 成在人线av无码免费 | 伊人久久大香线蕉av一区二区 | 日韩精品一区二区av在线 | √8天堂资源地址中文在线 | 国产一区二区三区日韩精品 | 99久久久无码国产精品免费 | 欧美色就是色 | 日产国产精品亚洲系列 | 免费网站看v片在线18禁无码 | 影音先锋中文字幕无码 | 高中生自慰www网站 | 久久久国产精品无码免费专区 | 3d动漫精品啪啪一区二区中 | 国色天香社区在线视频 | 亚洲精品中文字幕 | 日韩精品无码免费一区二区三区 | 成人无码视频在线观看网站 | 国产成人亚洲综合无码 | 中文字幕无码免费久久9一区9 | 亚洲精品国产a久久久久久 | 亚洲人成网站在线播放942 | 人妻天天爽夜夜爽一区二区 | 乱人伦人妻中文字幕无码久久网 | 婷婷五月综合激情中文字幕 | 美女黄网站人色视频免费国产 | 国模大胆一区二区三区 | 东京一本一道一二三区 | 久久精品99久久香蕉国产色戒 | 欧美老熟妇乱xxxxx | 亚洲码国产精品高潮在线 | 久久久久免费看成人影片 | 国产人妻精品午夜福利免费 | 国产午夜亚洲精品不卡下载 | 亚洲精品国产品国语在线观看 | 男女性色大片免费网站 | 欧美老熟妇乱xxxxx | 久久久亚洲欧洲日产国码αv | 亚洲精品久久久久久一区二区 | 国产农村乱对白刺激视频 | 精品厕所偷拍各类美女tp嘘嘘 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 在线观看欧美一区二区三区 | 欧美35页视频在线观看 | 日本爽爽爽爽爽爽在线观看免 | 老子影院午夜伦不卡 | 亚洲人成影院在线无码按摩店 | 天下第一社区视频www日本 | 丰满少妇人妻久久久久久 | 激情国产av做激情国产爱 | 国产一区二区不卡老阿姨 | 亚洲综合色区中文字幕 | 精品久久久久久人妻无码中文字幕 | 久久99精品国产.久久久久 | 亚洲经典千人经典日产 | 国产精品igao视频网 | 日韩视频 中文字幕 视频一区 | 精品久久久久香蕉网 | 久久精品国产大片免费观看 | 一本色道久久综合亚洲精品不卡 | 暴力强奷在线播放无码 | 国产乱人伦av在线无码 | 无码人妻少妇伦在线电影 | aa片在线观看视频在线播放 | 一本久道高清无码视频 | 中文字幕av无码一区二区三区电影 | 蜜臀av无码人妻精品 | 亚洲欧美精品aaaaaa片 | 亚洲中文无码av永久不收费 | 国产av一区二区三区最新精品 | 亚洲一区二区三区无码久久 | 精品一区二区三区波多野结衣 | 日韩人妻少妇一区二区三区 | 亚洲国产精品成人久久蜜臀 | 牲欲强的熟妇农村老妇女 | 欧美一区二区三区视频在线观看 | 国产成人无码一二三区视频 | 日本精品久久久久中文字幕 | 国产精品久久国产三级国 | 给我免费的视频在线观看 | 欧美日韩综合一区二区三区 | 超碰97人人射妻 | 人妻天天爽夜夜爽一区二区 | 老子影院午夜精品无码 | 少妇性俱乐部纵欲狂欢电影 | 亚洲国产成人av在线观看 | 图片区 小说区 区 亚洲五月 | 一本久久a久久精品亚洲 | 国产精品va在线播放 | 中文字幕乱码中文乱码51精品 | 国产超级va在线观看视频 | 久久www免费人成人片 | 澳门永久av免费网站 | 亚洲人交乣女bbw | 日韩少妇白浆无码系列 | 特级做a爰片毛片免费69 | 3d动漫精品啪啪一区二区中 | 狠狠躁日日躁夜夜躁2020 | 熟女少妇在线视频播放 | 国产在线一区二区三区四区五区 | 欧美黑人巨大xxxxx | 日本肉体xxxx裸交 | 一本久道高清无码视频 | 久久人人97超碰a片精品 | 久久精品一区二区三区四区 | 亚洲a无码综合a国产av中文 | 精品国产aⅴ无码一区二区 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲国精产品一二二线 | 色一情一乱一伦 | 国产麻豆精品精东影业av网站 | 国产免费观看黄av片 | 丰满岳乱妇在线观看中字无码 | 亚洲精品美女久久久久久久 | 久久国语露脸国产精品电影 | 亚洲日本在线电影 | 久久人人爽人人爽人人片av高清 | 日韩精品无码一区二区中文字幕 | 无码人妻少妇伦在线电影 | 波多野结衣高清一区二区三区 | 色婷婷久久一区二区三区麻豆 | 亚洲人成人无码网www国产 | 亚洲精品午夜国产va久久成人 | 久久99精品久久久久久动态图 | 欧美午夜特黄aaaaaa片 | 特级做a爰片毛片免费69 | 最新国产麻豆aⅴ精品无码 | 婷婷色婷婷开心五月四房播播 | 亚洲成av人影院在线观看 | 国产sm调教视频在线观看 | 国色天香社区在线视频 | 国产成人一区二区三区在线观看 | 久激情内射婷内射蜜桃人妖 | 性生交大片免费看女人按摩摩 | 97精品人妻一区二区三区香蕉 | 蜜臀aⅴ国产精品久久久国产老师 | 丰满肥臀大屁股熟妇激情视频 | 国内老熟妇对白xxxxhd | 无码毛片视频一区二区本码 | 一本久久a久久精品vr综合 | 中文字幕无码视频专区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国内精品一区二区三区不卡 | 无码成人精品区在线观看 | 成在人线av无码免观看麻豆 | 中文字幕乱码人妻无码久久 | 东京无码熟妇人妻av在线网址 | 欧美大屁股xxxxhd黑色 | 乱人伦人妻中文字幕无码 | 中文字幕无码热在线视频 | 麻豆国产人妻欲求不满谁演的 | 色一情一乱一伦一区二区三欧美 | 蜜桃臀无码内射一区二区三区 | 人人妻人人澡人人爽欧美精品 | 久久精品人人做人人综合试看 | 三级4级全黄60分钟 | 在线精品国产一区二区三区 | 国产麻豆精品一区二区三区v视界 | 少妇人妻偷人精品无码视频 | 日本www一道久久久免费榴莲 | 扒开双腿吃奶呻吟做受视频 | 欧美激情一区二区三区成人 | 国产成人精品必看 | 国产精品高潮呻吟av久久4虎 | 乱中年女人伦av三区 | 国产成人无码av一区二区 | 2020久久香蕉国产线看观看 | 高清国产亚洲精品自在久久 | 999久久久国产精品消防器材 | 国产农村乱对白刺激视频 | 久久99久久99精品中文字幕 | 国产亚洲美女精品久久久2020 | av无码电影一区二区三区 | 欧洲美熟女乱又伦 | 国产真实乱对白精彩久久 | 伊人久久大香线蕉av一区二区 | 性色av无码免费一区二区三区 | 亚洲精品一区二区三区大桥未久 | 国产熟妇高潮叫床视频播放 | 爆乳一区二区三区无码 | 精品偷拍一区二区三区在线看 | 色诱久久久久综合网ywww | 亚洲一区二区三区香蕉 | 免费看少妇作爱视频 | 色五月丁香五月综合五月 | 久久亚洲中文字幕无码 | 亚洲精品国偷拍自产在线麻豆 | 1000部夫妻午夜免费 | 午夜无码区在线观看 | 免费中文字幕日韩欧美 | 亚洲精品中文字幕久久久久 | 天下第一社区视频www日本 | 性欧美熟妇videofreesex | 内射后入在线观看一区 | 色窝窝无码一区二区三区色欲 | 色偷偷人人澡人人爽人人模 | 亚洲成av人片天堂网无码】 | 2019nv天堂香蕉在线观看 | 国产亚洲人成a在线v网站 | 色婷婷综合中文久久一本 | 激情综合激情五月俺也去 | 国产精品高潮呻吟av久久 | 99久久久无码国产精品免费 | 无码国内精品人妻少妇 | 美女扒开屁股让男人桶 | 亚洲欧美综合区丁香五月小说 | 97夜夜澡人人双人人人喊 | 国产精品.xx视频.xxtv | 精品人妻人人做人人爽夜夜爽 | 国产精品人人妻人人爽 | 国产sm调教视频在线观看 | 爱做久久久久久 | 红桃av一区二区三区在线无码av | 国产精品爱久久久久久久 | 中文精品久久久久人妻不卡 | 在线播放无码字幕亚洲 | 人人妻人人澡人人爽欧美一区 | 久久亚洲中文字幕精品一区 | 无码人妻精品一区二区三区不卡 | 亚洲午夜久久久影院 | 两性色午夜免费视频 | 永久免费精品精品永久-夜色 | 久久亚洲中文字幕无码 | 一本大道久久东京热无码av | 国产97在线 | 亚洲 | 2020久久香蕉国产线看观看 | 久久这里只有精品视频9 | 亚洲精品综合一区二区三区在线 | 精品无码成人片一区二区98 | 国产高清不卡无码视频 | 久久婷婷五月综合色国产香蕉 | 中文字幕人妻丝袜二区 | 成人片黄网站色大片免费观看 | 又黄又爽又色的视频 | 精品久久久久久人妻无码中文字幕 | 亚洲综合另类小说色区 | 亚洲综合精品香蕉久久网 | 中国女人内谢69xxxx | 亚洲精品无码国产 | 99麻豆久久久国产精品免费 | 131美女爱做视频 | 乱码av麻豆丝袜熟女系列 | 国产农村乱对白刺激视频 | av人摸人人人澡人人超碰下载 | 少妇厨房愉情理9仑片视频 | 中文无码成人免费视频在线观看 | 成人动漫在线观看 | 少妇邻居内射在线 | 精品少妇爆乳无码av无码专区 | 亚洲熟熟妇xxxx | 无码人妻黑人中文字幕 | 免费无码一区二区三区蜜桃大 | 又粗又大又硬又长又爽 | 1000部啪啪未满十八勿入下载 | 熟女少妇在线视频播放 | 丰满人妻被黑人猛烈进入 | 少妇高潮喷潮久久久影院 | 67194成是人免费无码 | 日本大乳高潮视频在线观看 | 性开放的女人aaa片 | 亚洲日本一区二区三区在线 | 亚洲精品欧美二区三区中文字幕 | 丝袜 中出 制服 人妻 美腿 | 欧美丰满熟妇xxxx | 国精产品一品二品国精品69xx | 国内少妇偷人精品视频 | 天天躁夜夜躁狠狠是什么心态 | 久久精品女人天堂av免费观看 | 高潮毛片无遮挡高清免费 | 久久午夜无码鲁丝片秋霞 | 国产熟女一区二区三区四区五区 | 欧洲极品少妇 | 国产成人久久精品流白浆 | 麻豆果冻传媒2021精品传媒一区下载 | 好爽又高潮了毛片免费下载 | 中文字幕人妻丝袜二区 | 丁香啪啪综合成人亚洲 | 四虎影视成人永久免费观看视频 | 精品欧洲av无码一区二区三区 | 久久人人爽人人爽人人片av高清 | 好屌草这里只有精品 | 亚洲中文字幕久久无码 | 牲欲强的熟妇农村老妇女 | 国内综合精品午夜久久资源 | 一二三四社区在线中文视频 | 亚洲国产成人a精品不卡在线 | 久久久久亚洲精品中文字幕 | 少妇性荡欲午夜性开放视频剧场 | 国产精品福利视频导航 | 鲁一鲁av2019在线 | 青草青草久热国产精品 | 男人和女人高潮免费网站 | 欧美日韩色另类综合 | 性欧美牲交xxxxx视频 | 亚洲成a人片在线观看无码 | 亚洲中文字幕无码中文字在线 | 久久精品国产99久久6动漫 | 国产精品亚洲专区无码不卡 | 亚洲男女内射在线播放 | 天堂亚洲免费视频 | 扒开双腿吃奶呻吟做受视频 | 无套内射视频囯产 | 波多野42部无码喷潮在线 | 国产卡一卡二卡三 | 日本精品少妇一区二区三区 | 亚洲精品午夜无码电影网 | 国产精品无码久久av | 少妇高潮一区二区三区99 | 蜜臀av无码人妻精品 | 男女爱爱好爽视频免费看 | 国产三级精品三级男人的天堂 | 色噜噜亚洲男人的天堂 | 国产香蕉尹人综合在线观看 | 亚洲国产精品毛片av不卡在线 | 色欲av亚洲一区无码少妇 | 国产亚洲精品久久久闺蜜 | 无码人妻丰满熟妇区五十路百度 | 又大又紧又粉嫩18p少妇 | 免费播放一区二区三区 | 久久无码专区国产精品s | 国产97在线 | 亚洲 | 福利一区二区三区视频在线观看 | 中文字幕乱码中文乱码51精品 | 中文字幕久久久久人妻 | 亚洲成av人在线观看网址 | 久久国产精品偷任你爽任你 | 国产精品亚洲а∨无码播放麻豆 | 日本一区二区三区免费高清 | 在线а√天堂中文官网 | 亚洲欧美日韩综合久久久 | 在线播放亚洲第一字幕 | 婷婷五月综合激情中文字幕 | 装睡被陌生人摸出水好爽 | 又大又黄又粗又爽的免费视频 | 中文字幕无线码 | 国产亚洲tv在线观看 | 亚洲欧洲中文日韩av乱码 | 两性色午夜视频免费播放 | 未满小14洗澡无码视频网站 | 国产人成高清在线视频99最全资源 | 国产免费观看黄av片 | 亚洲精品国产a久久久久久 | 老熟妇仑乱视频一区二区 | 无码精品国产va在线观看dvd | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 久久久精品欧美一区二区免费 | 中文字幕日产无线码一区 | 亚洲人成网站在线播放942 | 中文字幕无码人妻少妇免费 | 国产香蕉尹人综合在线观看 | 丝袜 中出 制服 人妻 美腿 | 老熟妇乱子伦牲交视频 | 妺妺窝人体色www在线小说 | 一本久道高清无码视频 | 国产av人人夜夜澡人人爽麻豆 | 亚洲色偷偷男人的天堂 | 欧美午夜特黄aaaaaa片 | 久久久久免费精品国产 | 一个人免费观看的www视频 | av人摸人人人澡人人超碰下载 | 麻豆国产丝袜白领秘书在线观看 | 国产午夜手机精彩视频 | 久久午夜无码鲁丝片午夜精品 | 日本精品人妻无码77777 天堂一区人妻无码 | 老司机亚洲精品影院无码 | 人人妻人人澡人人爽欧美一区 | 国产人妖乱国产精品人妖 | 欧美怡红院免费全部视频 | 国产 浪潮av性色四虎 | 久久综合狠狠综合久久综合88 | 成熟女人特级毛片www免费 | 中文字幕无码av激情不卡 | 国产精品无码mv在线观看 | 真人与拘做受免费视频一 | 性啪啪chinese东北女人 | 久激情内射婷内射蜜桃人妖 | 四虎国产精品一区二区 | 理论片87福利理论电影 | 欧美人与禽猛交狂配 | 动漫av网站免费观看 | 国产精品美女久久久久av爽李琼 | 色综合久久久无码网中文 | 日韩无套无码精品 | 国内精品人妻无码久久久影院蜜桃 | 黑人粗大猛烈进出高潮视频 | 精品欧洲av无码一区二区三区 | 无码人妻精品一区二区三区下载 | 真人与拘做受免费视频一 | 国产三级久久久精品麻豆三级 | 67194成是人免费无码 | 国产亚洲精品久久久久久 | 丰满少妇女裸体bbw | 99精品国产综合久久久久五月天 | 国产另类ts人妖一区二区 | 国产超碰人人爽人人做人人添 | 俺去俺来也在线www色官网 | 色综合久久久无码网中文 | 国产精华av午夜在线观看 | 久久无码中文字幕免费影院蜜桃 | 18禁止看的免费污网站 | 国产色视频一区二区三区 | 日韩欧美中文字幕公布 | 国产成人无码av片在线观看不卡 | 国产精品va在线观看无码 | 成人亚洲精品久久久久软件 | 欧美喷潮久久久xxxxx | 一二三四社区在线中文视频 | av小次郎收藏 | 国产九九九九九九九a片 | 人人妻人人澡人人爽人人精品 | 色一情一乱一伦一视频免费看 | 欧美野外疯狂做受xxxx高潮 | 少妇无码吹潮 | 性欧美videos高清精品 | 亚洲中文字幕在线无码一区二区 | 色婷婷久久一区二区三区麻豆 | 漂亮人妻洗澡被公强 日日躁 | 久久综合狠狠综合久久综合88 | 狠狠亚洲超碰狼人久久 | 亚洲国产精品无码久久久久高潮 | 任你躁国产自任一区二区三区 | 蜜桃臀无码内射一区二区三区 | 色婷婷综合激情综在线播放 | 国产亚洲精品久久久久久久久动漫 | aⅴ在线视频男人的天堂 | 思思久久99热只有频精品66 | 欧美兽交xxxx×视频 | 性欧美videos高清精品 | 成 人 网 站国产免费观看 | 帮老师解开蕾丝奶罩吸乳网站 | 色综合视频一区二区三区 | 永久黄网站色视频免费直播 | 国产性生交xxxxx无码 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲色偷偷偷综合网 | 色综合天天综合狠狠爱 | 中文字幕无码免费久久9一区9 | 国产凸凹视频一区二区 | 鲁鲁鲁爽爽爽在线视频观看 | 99国产精品白浆在线观看免费 | 无码人妻出轨黑人中文字幕 | 乱人伦人妻中文字幕无码久久网 | 亚洲日韩一区二区 | 久久久久久av无码免费看大片 | 兔费看少妇性l交大片免费 | 成人无码影片精品久久久 | 少妇高潮一区二区三区99 | 国产偷国产偷精品高清尤物 | 亚洲无人区午夜福利码高清完整版 | 国产精品资源一区二区 | 精品久久久无码人妻字幂 | 欧美老妇与禽交 | 狠狠亚洲超碰狼人久久 | 日本一卡二卡不卡视频查询 | 亚洲一区二区三区四区 | 扒开双腿疯狂进出爽爽爽视频 | 狂野欧美激情性xxxx | 99麻豆久久久国产精品免费 | 青青草原综合久久大伊人精品 | 曰本女人与公拘交酡免费视频 | 欧美人与禽猛交狂配 | 日韩欧美成人免费观看 | 亚洲精品中文字幕 | 永久免费观看美女裸体的网站 | 国产亚洲精品久久久闺蜜 | 久久久久久久女国产乱让韩 | 久久久精品国产sm最大网站 | 国产午夜亚洲精品不卡下载 | 国产农村妇女高潮大叫 | 日本大乳高潮视频在线观看 | www国产精品内射老师 | 亚洲小说春色综合另类 | 国产成人精品优优av | 亚洲狠狠婷婷综合久久 | 精品国产青草久久久久福利 | 黑人粗大猛烈进出高潮视频 | 欧美老妇交乱视频在线观看 | 中文字幕无码日韩欧毛 | 无码精品人妻一区二区三区av | 欧美丰满老熟妇xxxxx性 | 久青草影院在线观看国产 | www国产亚洲精品久久久日本 | av小次郎收藏 | 国产精品爱久久久久久久 | 欧美乱妇无乱码大黄a片 | 色五月丁香五月综合五月 | 欧美熟妇另类久久久久久多毛 | 中文字幕乱码亚洲无线三区 | 国产精品无码成人午夜电影 | 一二三四社区在线中文视频 | 99精品视频在线观看免费 | 国内少妇偷人精品视频 | 97精品国产97久久久久久免费 | 无码av中文字幕免费放 | 亚洲国产综合无码一区 | 精品人妻中文字幕有码在线 | 久久久久亚洲精品男人的天堂 | 国产成人综合在线女婷五月99播放 | 亚洲精品一区三区三区在线观看 | 亚洲精品一区二区三区大桥未久 | av无码不卡在线观看免费 | 最新国产麻豆aⅴ精品无码 | 国产精品亚洲五月天高清 | 日日夜夜撸啊撸 | 四虎永久在线精品免费网址 | 精品国精品国产自在久国产87 | 精品无码国产自产拍在线观看蜜 | 国产精品18久久久久久麻辣 | 在线天堂新版最新版在线8 | 日本www一道久久久免费榴莲 | 亚洲精品成a人在线观看 | 色综合久久久无码中文字幕 | 亚洲狠狠婷婷综合久久 | 搡女人真爽免费视频大全 | 日韩av无码中文无码电影 | 色综合久久久久综合一本到桃花网 | 精品国产精品久久一区免费式 | 中文字幕 人妻熟女 | 久久久久se色偷偷亚洲精品av | 人人澡人人透人人爽 | 亚洲成a人片在线观看无码 | 欧洲精品码一区二区三区免费看 | 日本精品久久久久中文字幕 | 曰本女人与公拘交酡免费视频 | 精品无码国产自产拍在线观看蜜 | 性欧美大战久久久久久久 | 日本熟妇大屁股人妻 | 亚洲日本一区二区三区在线 | 乱人伦人妻中文字幕无码久久网 | 曰本女人与公拘交酡免费视频 | 少妇被黑人到高潮喷出白浆 | 日本精品人妻无码77777 天堂一区人妻无码 | 日韩 欧美 动漫 国产 制服 | 亚洲中文字幕无码一久久区 | 国产在线无码精品电影网 | 亚洲乱码中文字幕在线 | 中文字幕乱妇无码av在线 | 亚洲国产午夜精品理论片 | 亚洲区小说区激情区图片区 | 人妻天天爽夜夜爽一区二区 | 西西人体www44rt大胆高清 | 国产精品人人爽人人做我的可爱 | 一本久久伊人热热精品中文字幕 | 熟女俱乐部五十路六十路av | 国产综合在线观看 | 国产成人无码av在线影院 | 国内揄拍国内精品少妇国语 | 亚洲国产欧美在线成人 | 亚洲自偷精品视频自拍 | 丰满人妻一区二区三区免费视频 | 无码精品人妻一区二区三区av | 少妇人妻偷人精品无码视频 | 国产乱人偷精品人妻a片 | 国产xxx69麻豆国语对白 | 国产成人无码一二三区视频 | 男女性色大片免费网站 | 国产精品18久久久久久麻辣 | 激情人妻另类人妻伦 | 亚洲码国产精品高潮在线 | 国产精品久免费的黄网站 | 牲欲强的熟妇农村老妇女视频 | 久久综合九色综合欧美狠狠 | 久久成人a毛片免费观看网站 | 亚洲啪av永久无码精品放毛片 | 成人毛片一区二区 | 欧美自拍另类欧美综合图片区 | 成人性做爰aaa片免费看不忠 | 国产真实伦对白全集 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品久久久久久亚洲影视内衣 | 欧美变态另类xxxx | 日韩av无码一区二区三区 | 熟妇激情内射com | 国产激情无码一区二区 | 欧美熟妇另类久久久久久多毛 | 国产午夜精品一区二区三区嫩草 | 日韩人妻系列无码专区 | 精品国偷自产在线视频 | 色 综合 欧美 亚洲 国产 | 国产在热线精品视频 | 亚洲aⅴ无码成人网站国产app | 亚洲七七久久桃花影院 | 国产熟女一区二区三区四区五区 | 性啪啪chinese东北女人 | 日韩av无码一区二区三区 | 国产性生交xxxxx无码 | av无码不卡在线观看免费 | 国产激情一区二区三区 | 久久亚洲中文字幕精品一区 | 无码av中文字幕免费放 | 风流少妇按摩来高潮 | 一本久道高清无码视频 | 窝窝午夜理论片影院 | 欧美喷潮久久久xxxxx | 亚洲aⅴ无码成人网站国产app | 老熟妇乱子伦牲交视频 | 国产在线精品一区二区三区直播 | 精品久久久无码中文字幕 | 18精品久久久无码午夜福利 | 极品嫩模高潮叫床 | 四虎影视成人永久免费观看视频 | 亚洲春色在线视频 | 两性色午夜视频免费播放 | 波多野结衣av一区二区全免费观看 | 久热国产vs视频在线观看 | 人妻少妇被猛烈进入中文字幕 | 在线亚洲高清揄拍自拍一品区 | 特级做a爰片毛片免费69 | 中文字幕久久久久人妻 | 亚洲国产av精品一区二区蜜芽 | 双乳奶水饱满少妇呻吟 | 中文字幕无码日韩欧毛 | 色婷婷综合中文久久一本 | 九九综合va免费看 | 人人爽人人爽人人片av亚洲 | 人妻有码中文字幕在线 | 亚洲 a v无 码免 费 成 人 a v | 最新版天堂资源中文官网 | 天干天干啦夜天干天2017 | 老熟女重囗味hdxx69 | 欧美人与禽zoz0性伦交 | 噜噜噜亚洲色成人网站 | 国产色精品久久人妻 | 亚洲人成影院在线观看 | 日本xxxx色视频在线观看免费 | 中文无码精品a∨在线观看不卡 | 亚洲精品久久久久avwww潮水 | 欧美zoozzooz性欧美 | av香港经典三级级 在线 | 久久99国产综合精品 | 欧美日韩一区二区三区自拍 | 中文字幕无码av激情不卡 | 国产真实夫妇视频 | 亚洲综合无码一区二区三区 | 日本精品少妇一区二区三区 | 久久久久成人精品免费播放动漫 | 国产真实夫妇视频 | 激情内射亚州一区二区三区爱妻 | 成人无码精品1区2区3区免费看 | 成人女人看片免费视频放人 | 55夜色66夜色国产精品视频 | 大乳丰满人妻中文字幕日本 | 久久人人爽人人爽人人片ⅴ | 真人与拘做受免费视频一 | 综合激情五月综合激情五月激情1 | 亚洲一区二区三区香蕉 | 在教室伦流澡到高潮hnp视频 | 免费人成在线视频无码 | 天天躁日日躁狠狠躁免费麻豆 | 国产真实夫妇视频 | 伊人久久大香线蕉亚洲 | 三上悠亚人妻中文字幕在线 | 欧美激情综合亚洲一二区 | 欧美丰满少妇xxxx性 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲中文字幕乱码av波多ji | 国产偷自视频区视频 | 国产无套粉嫩白浆在线 | 国产美女精品一区二区三区 | 2019nv天堂香蕉在线观看 | 天天综合网天天综合色 | www国产亚洲精品久久久日本 | 亚洲人成网站在线播放942 | 午夜理论片yy44880影院 | 好屌草这里只有精品 | 亚洲自偷自偷在线制服 | 丰满人妻一区二区三区免费视频 | 亚洲欧洲中文日韩av乱码 | 午夜精品久久久久久久久 | 亚洲熟熟妇xxxx | 小泽玛莉亚一区二区视频在线 | 中文字幕日产无线码一区 | 三上悠亚人妻中文字幕在线 | 扒开双腿吃奶呻吟做受视频 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品国产品国语在线观看 | 夜精品a片一区二区三区无码白浆 | 亚洲第一无码av无码专区 | 最近免费中文字幕中文高清百度 | 亚洲人成人无码网www国产 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲综合色区中文字幕 | 久久亚洲日韩精品一区二区三区 | 精品熟女少妇av免费观看 | 亚洲日韩av一区二区三区四区 | 樱花草在线社区www | 国产精品久久久久久亚洲毛片 | 性色欲情网站iwww九文堂 | 亚洲综合另类小说色区 | 狠狠色噜噜狠狠狠7777奇米 | 国产香蕉尹人视频在线 | 亚洲熟女一区二区三区 | 亚洲一区二区三区无码久久 | 伊人久久婷婷五月综合97色 | 国产人妻精品一区二区三区不卡 | 久久久久人妻一区精品色欧美 | 性欧美牲交xxxxx视频 | 俄罗斯老熟妇色xxxx | 亚洲大尺度无码无码专区 | 婷婷综合久久中文字幕蜜桃三电影 | 人妻无码久久精品人妻 | 国产亚洲美女精品久久久2020 | 国产乱码精品一品二品 | 人妻互换免费中文字幕 | 2020久久香蕉国产线看观看 | 国产suv精品一区二区五 | 国产成人综合在线女婷五月99播放 | 亚洲色成人中文字幕网站 | 无码精品国产va在线观看dvd | 久久精品一区二区三区四区 | 无码一区二区三区在线观看 | 国产午夜无码视频在线观看 | 亚洲国产一区二区三区在线观看 | 国产亚洲精品久久久久久 | 国产成人人人97超碰超爽8 | 成人免费无码大片a毛片 | 国产国产精品人在线视 | 久久国产精品二国产精品 | 久久aⅴ免费观看 | 永久免费观看美女裸体的网站 | 日本一区二区三区免费播放 | 精品乱子伦一区二区三区 | 激情亚洲一区国产精品 | 欧洲vodafone精品性 | 丰满岳乱妇在线观看中字无码 | 国精产品一品二品国精品69xx | 国产成人亚洲综合无码 | 亚洲成色www久久网站 | 国产成人一区二区三区在线观看 | 国产精品久久久久影院嫩草 | 中文字幕无线码 | 欧美日韩一区二区三区自拍 | 无码国内精品人妻少妇 | 久久午夜无码鲁丝片 | 美女极度色诱视频国产 | 精品国产青草久久久久福利 | 最新版天堂资源中文官网 | 欧美35页视频在线观看 | 欧美猛少妇色xxxxx | 色爱情人网站 | 荫蒂被男人添的好舒服爽免费视频 | 国产精品美女久久久 | 亚洲中文字幕久久无码 | 男女猛烈xx00免费视频试看 | 99久久久无码国产aaa精品 | 亚洲乱码国产乱码精品精 | 久久精品国产99精品亚洲 | 麻豆果冻传媒2021精品传媒一区下载 | 久久精品99久久香蕉国产色戒 | 久久伊人色av天堂九九小黄鸭 | 免费视频欧美无人区码 | 亚洲午夜无码久久 | 国产在线精品一区二区高清不卡 | 国产av无码专区亚洲a∨毛片 | 高潮喷水的毛片 | 亚洲精品一区二区三区大桥未久 | 性啪啪chinese东北女人 | 国产又爽又黄又刺激的视频 | 无套内射视频囯产 | 99精品无人区乱码1区2区3区 | 天天做天天爱天天爽综合网 | 又大又硬又爽免费视频 | 亚洲一区二区三区偷拍女厕 | 亚洲午夜久久久影院 | 国产成人无码午夜视频在线观看 | 俺去俺来也www色官网 | 成人亚洲精品久久久久 | 日本肉体xxxx裸交 | 国产激情精品一区二区三区 | 亚洲精品国产品国语在线观看 | 亚洲欧洲无卡二区视頻 | 天海翼激烈高潮到腰振不止 | 精品一区二区三区无码免费视频 | 色欲人妻aaaaaaa无码 | 国产精品欧美成人 | 久精品国产欧美亚洲色aⅴ大片 | a片在线免费观看 | 久久伊人色av天堂九九小黄鸭 | 日本一本二本三区免费 | 人妻aⅴ无码一区二区三区 | 综合激情五月综合激情五月激情1 | 无码人妻丰满熟妇区五十路百度 | 疯狂三人交性欧美 | 国产亚洲精品久久久久久久 | 精品国产一区二区三区av 性色 | 色综合久久久无码中文字幕 | 无套内射视频囯产 | 77777熟女视频在线观看 а天堂中文在线官网 | 欧美黑人巨大xxxxx | 久久精品国产日本波多野结衣 | 男人和女人高潮免费网站 | 俺去俺来也www色官网 | 狠狠噜狠狠狠狠丁香五月 | 欧美怡红院免费全部视频 | 一区二区三区乱码在线 | 欧洲 | 中文字幕精品av一区二区五区 | 中文字幕无码视频专区 | 成人试看120秒体验区 | 国产精品99久久精品爆乳 | 无码国内精品人妻少妇 | 国产明星裸体无码xxxx视频 | 婷婷综合久久中文字幕蜜桃三电影 | 丰满岳乱妇在线观看中字无码 | 日日摸夜夜摸狠狠摸婷婷 | 任你躁在线精品免费 | 日韩人妻无码一区二区三区久久99 | 久久zyz资源站无码中文动漫 | 久久久久99精品成人片 | 性欧美videos高清精品 | 天下第一社区视频www日本 | 国产猛烈高潮尖叫视频免费 | 一二三四在线观看免费视频 | 日韩欧美中文字幕在线三区 | 亚洲精品成人av在线 | 亚洲精品久久久久avwww潮水 | 激情亚洲一区国产精品 | 2020久久香蕉国产线看观看 | 欧美日韩人成综合在线播放 | 久久人人爽人人爽人人片ⅴ | 曰韩无码二三区中文字幕 | 国产精品久久精品三级 | 麻豆蜜桃av蜜臀av色欲av | 精品国产一区二区三区四区 | 亚洲日本一区二区三区在线 | 波多野结衣乳巨码无在线观看 | 无码人妻av免费一区二区三区 | 无码人妻av免费一区二区三区 | 无码av岛国片在线播放 | 红桃av一区二区三区在线无码av | 欧美刺激性大交 | 台湾无码一区二区 | 日本一区二区三区免费播放 | 久久人人爽人人爽人人片ⅴ | 国产人妻久久精品二区三区老狼 | 午夜性刺激在线视频免费 | 激情亚洲一区国产精品 | 国产av剧情md精品麻豆 | 大地资源中文第3页 | 无码毛片视频一区二区本码 | 人人妻人人澡人人爽欧美一区九九 | 300部国产真实乱 | 亚洲欧美精品aaaaaa片 | 国产一区二区三区日韩精品 | 高清国产亚洲精品自在久久 | 日日橹狠狠爱欧美视频 | 亚洲一区二区三区香蕉 | 国产高清av在线播放 | 无码人妻久久一区二区三区不卡 | 永久黄网站色视频免费直播 | 久久国产精品萌白酱免费 | 成人欧美一区二区三区黑人 | 国产suv精品一区二区五 | 亚洲人成网站在线播放942 | 久久综合香蕉国产蜜臀av | 欧美日韩视频无码一区二区三 | 色偷偷人人澡人人爽人人模 | 日日噜噜噜噜夜夜爽亚洲精品 | 无码国产色欲xxxxx视频 | 最近的中文字幕在线看视频 | 我要看www免费看插插视频 | 性欧美videos高清精品 | 狠狠cao日日穞夜夜穞av | 中文字幕亚洲情99在线 | 久久亚洲精品中文字幕无男同 | 少妇一晚三次一区二区三区 | 丰满岳乱妇在线观看中字无码 | 99精品视频在线观看免费 | 亚洲精品成人av在线 | 国产国产精品人在线视 | 疯狂三人交性欧美 | 国产农村乱对白刺激视频 | 国语自产偷拍精品视频偷 | 国内精品九九久久久精品 | 色欲综合久久中文字幕网 | 妺妺窝人体色www在线小说 | 中文字幕无码av激情不卡 | 成年美女黄网站色大免费全看 | 小泽玛莉亚一区二区视频在线 | 男女作爱免费网站 | 女人被男人爽到呻吟的视频 | 一本大道久久东京热无码av | 麻豆精产国品 | 国产亚洲欧美在线专区 | 免费男性肉肉影院 | 国产人妻人伦精品1国产丝袜 | 日本一区二区更新不卡 | 黑人大群体交免费视频 | 99在线 | 亚洲 | 国产精品亚洲а∨无码播放麻豆 | 免费观看又污又黄的网站 | 精品aⅴ一区二区三区 | 老司机亚洲精品影院无码 | 性欧美熟妇videofreesex | 亚洲午夜福利在线观看 | 熟妇激情内射com | 鲁大师影院在线观看 | 日本肉体xxxx裸交 | 色综合久久久无码中文字幕 | 欧美日本免费一区二区三区 | 人人爽人人澡人人人妻 | 无人区乱码一区二区三区 | 中文字幕无码免费久久99 | 国产精品视频免费播放 | 2019午夜福利不卡片在线 | 亚洲日韩一区二区三区 | 乱码av麻豆丝袜熟女系列 | 亚洲色偷偷偷综合网 | 99久久精品日本一区二区免费 | 爆乳一区二区三区无码 | 99在线 | 亚洲 | 国产精品美女久久久网av | 国产超碰人人爽人人做人人添 | 最近的中文字幕在线看视频 | 欧美老熟妇乱xxxxx | 999久久久国产精品消防器材 | 国产猛烈高潮尖叫视频免费 | 中文字幕乱妇无码av在线 | 成熟人妻av无码专区 | 真人与拘做受免费视频 | 激情内射亚州一区二区三区爱妻 | 蜜桃视频插满18在线观看 | 国产网红无码精品视频 | 欧美刺激性大交 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美日本精品一区二区三区 | 精品久久久久香蕉网 | 亚洲人成无码网www | 国产亚洲精品久久久闺蜜 | 国产精品美女久久久网av | 欧美日韩一区二区免费视频 | 日日摸天天摸爽爽狠狠97 | 国产精品亚洲一区二区三区喷水 | 日本www一道久久久免费榴莲 | 亚洲国产精华液网站w | 精品无人区无码乱码毛片国产 | 国产sm调教视频在线观看 | 日韩 欧美 动漫 国产 制服 | 最新国产乱人伦偷精品免费网站 | 日本护士毛茸茸高潮 | 午夜男女很黄的视频 | 国产成人综合美国十次 | 亚洲第一无码av无码专区 | 丰腴饱满的极品熟妇 | 97se亚洲精品一区 | 最近免费中文字幕中文高清百度 | 国产精品久久久久久久影院 | 精品aⅴ一区二区三区 | yw尤物av无码国产在线观看 | 免费中文字幕日韩欧美 | 国产亚洲精品久久久ai换 | 天天拍夜夜添久久精品 | 白嫩日本少妇做爰 | 日韩av无码中文无码电影 | 天天拍夜夜添久久精品大 | 亚洲综合在线一区二区三区 | 久久综合给久久狠狠97色 | 亚洲大尺度无码无码专区 | 一本色道久久综合狠狠躁 | 国产精品国产三级国产专播 | 樱花草在线播放免费中文 | 亚洲成a人片在线观看无码3d | 又大又硬又黄的免费视频 | 日日摸天天摸爽爽狠狠97 | 未满小14洗澡无码视频网站 | 国产人妻精品午夜福利免费 | 国产亚洲日韩欧美另类第八页 | 亚洲区欧美区综合区自拍区 | 最新国产麻豆aⅴ精品无码 | 精品久久久久久人妻无码中文字幕 | 天堂在线观看www | 日本成熟视频免费视频 | 日本一区二区三区免费高清 | 午夜精品一区二区三区的区别 | 亚洲成av人片天堂网无码】 | 激情内射亚州一区二区三区爱妻 | 亚洲日本在线电影 | 丰满人妻翻云覆雨呻吟视频 | 欧美怡红院免费全部视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产一区二区三区四区五区加勒比 | 亚洲aⅴ无码成人网站国产app | 久久人人爽人人人人片 | 国产亚洲精品久久久久久国模美 | 亚洲综合伊人久久大杳蕉 | 亚洲另类伦春色综合小说 | 国产人妻人伦精品1国产丝袜 | 国产欧美精品一区二区三区 | 亚洲日本va午夜在线电影 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲中文字幕久久无码 | 日日摸天天摸爽爽狠狠97 | 国产内射老熟女aaaa | 国产在线一区二区三区四区五区 | 久久久久99精品国产片 | 久久精品国产99精品亚洲 | 国产性生大片免费观看性 | 天堂久久天堂av色综合 | 成人aaa片一区国产精品 | 亚洲精品www久久久 | 99精品国产综合久久久久五月天 | 亚洲男人av天堂午夜在 | 亚洲色大成网站www国产 | 麻豆精品国产精华精华液好用吗 | 色综合久久久久综合一本到桃花网 | 亚洲a无码综合a国产av中文 | 日本护士毛茸茸高潮 | 色一情一乱一伦一区二区三欧美 | 久久久久免费看成人影片 | 亚洲小说图区综合在线 | 女人被男人躁得好爽免费视频 | 免费人成网站视频在线观看 | 永久免费精品精品永久-夜色 | 亚洲日韩中文字幕在线播放 | 国产成人av免费观看 | av在线亚洲欧洲日产一区二区 | 日产精品高潮呻吟av久久 | 久久精品99久久香蕉国产色戒 | 欧美亚洲日韩国产人成在线播放 | 欧美精品国产综合久久 | 亚洲一区二区三区四区 | 少妇无码吹潮 | 久久综合激激的五月天 | 国产精品18久久久久久麻辣 | 国产精品久久久久9999小说 | 人人澡人摸人人添 | 国产精品亚洲五月天高清 | 无码一区二区三区在线 | 亚洲一区二区三区香蕉 | 人妻少妇被猛烈进入中文字幕 | 亚洲午夜福利在线观看 | 精品国精品国产自在久国产87 | 亚洲天堂2017无码 | 青春草在线视频免费观看 | 欧美日韩视频无码一区二区三 | 亚洲乱码日产精品bd | 欧美一区二区三区视频在线观看 | 欧洲欧美人成视频在线 | 成人免费视频视频在线观看 免费 | 亚洲国精产品一二二线 | 国产午夜福利100集发布 | 夫妻免费无码v看片 | 波多野结衣av一区二区全免费观看 | 国产精品免费大片 | 亚洲高清偷拍一区二区三区 | 亚洲精品午夜无码电影网 | 久久亚洲中文字幕精品一区 | 扒开双腿疯狂进出爽爽爽视频 | 内射爽无广熟女亚洲 | 熟妇人妻无码xxx视频 | 精品无码av一区二区三区 | 午夜福利一区二区三区在线观看 | 亚洲一区二区观看播放 | 亚洲精品国产精品乱码不卡 | 青春草在线视频免费观看 | 人妻少妇精品无码专区二区 | 国内揄拍国内精品人妻 | 福利一区二区三区视频在线观看 | 日本欧美一区二区三区乱码 | 国产成人精品久久亚洲高清不卡 | 亚洲成av人影院在线观看 | 极品嫩模高潮叫床 | 亚洲午夜福利在线观看 | 国产人妻大战黑人第1集 | 午夜性刺激在线视频免费 | 久久精品中文闷骚内射 | 国产人妻久久精品二区三区老狼 | 内射爽无广熟女亚洲 | 色婷婷综合激情综在线播放 | 无码毛片视频一区二区本码 | 国产午夜手机精彩视频 | 国产精品久免费的黄网站 | 国产成人综合色在线观看网站 | 曰韩无码二三区中文字幕 | 成年美女黄网站色大免费视频 | 永久黄网站色视频免费直播 | 中文字幕av伊人av无码av | 玩弄人妻少妇500系列视频 | 久久无码中文字幕免费影院蜜桃 | 超碰97人人做人人爱少妇 | 亚洲一区二区三区播放 | 成人精品一区二区三区中文字幕 | 国产精品久久久久9999小说 | 久久 国产 尿 小便 嘘嘘 | 亚洲国产成人av在线观看 | 无码福利日韩神码福利片 | 又色又爽又黄的美女裸体网站 | 精品国精品国产自在久国产87 | 国产激情艳情在线看视频 | 日日麻批免费40分钟无码 | 麻豆精品国产精华精华液好用吗 | 无码精品人妻一区二区三区av | 一本久久a久久精品vr综合 | 狠狠cao日日穞夜夜穞av | 国产精品国产三级国产专播 | 欧美老熟妇乱xxxxx | 无码一区二区三区在线观看 | 熟妇激情内射com | 国产极品美女高潮无套在线观看 | 在线观看国产午夜福利片 | 国产偷国产偷精品高清尤物 | 狠狠噜狠狠狠狠丁香五月 | 天天拍夜夜添久久精品 | 中文字幕无码免费久久99 | 人妻少妇被猛烈进入中文字幕 | 午夜性刺激在线视频免费 | 日韩精品久久久肉伦网站 | 日本乱人伦片中文三区 | 国产激情无码一区二区app | 日本一卡二卡不卡视频查询 | 婷婷色婷婷开心五月四房播播 | 亚洲综合无码一区二区三区 | 熟女少妇在线视频播放 | 亚洲无人区一区二区三区 | 激情人妻另类人妻伦 | 日韩精品久久久肉伦网站 | 99er热精品视频 | 日韩视频 中文字幕 视频一区 | 中国大陆精品视频xxxx | 超碰97人人射妻 | 国产乱人伦偷精品视频 | 东北女人啪啪对白 | 亚洲日韩一区二区 | 丰满人妻被黑人猛烈进入 | 亚洲国产精品一区二区美利坚 | 午夜男女很黄的视频 | 国产激情精品一区二区三区 | 一本色道婷婷久久欧美 | 亚洲精品午夜国产va久久成人 | 久久久国产精品无码免费专区 | 国精产品一品二品国精品69xx | 无码帝国www无码专区色综合 | 久久综合狠狠综合久久综合88 | 亚洲日韩av一区二区三区四区 | 中文字幕乱码人妻二区三区 | 99久久亚洲精品无码毛片 | 亚洲爆乳精品无码一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 精品人妻中文字幕有码在线 | 天天躁夜夜躁狠狠是什么心态 | 日韩精品成人一区二区三区 | 99久久久无码国产aaa精品 | 国产尤物精品视频 | 曰韩少妇内射免费播放 | 久久久久免费精品国产 | 国产疯狂伦交大片 | 国产精品a成v人在线播放 | 国产手机在线αⅴ片无码观看 | 亚洲精品国产品国语在线观看 | 亚洲色在线无码国产精品不卡 | 中文字幕无码视频专区 | 欧美 亚洲 国产 另类 | 欧美三级不卡在线观看 | 麻豆国产丝袜白领秘书在线观看 | 亚洲第一无码av无码专区 | 国产猛烈高潮尖叫视频免费 | 成人欧美一区二区三区黑人 | 亚洲综合精品香蕉久久网 | 自拍偷自拍亚洲精品被多人伦好爽 | 99久久精品午夜一区二区 | 女人被男人爽到呻吟的视频 | 亚洲国产高清在线观看视频 | 久热国产vs视频在线观看 | 亚洲一区av无码专区在线观看 | 久久精品人妻少妇一区二区三区 | 国产av久久久久精东av | 日本精品久久久久中文字幕 | 性色欲网站人妻丰满中文久久不卡 | 啦啦啦www在线观看免费视频 | 纯爱无遮挡h肉动漫在线播放 | 国产亚洲tv在线观看 | 日韩精品乱码av一区二区 | 香港三级日本三级妇三级 | 国产精品亚洲а∨无码播放麻豆 | 精品无码国产一区二区三区av | 无码人妻丰满熟妇区五十路百度 | 少妇性l交大片 | 亚洲色欲色欲欲www在线 | 99久久精品无码一区二区毛片 | 动漫av一区二区在线观看 | 中文字幕av无码一区二区三区电影 | 国产欧美精品一区二区三区 | 久久亚洲精品中文字幕无男同 | 成在人线av无码免费 | 1000部啪啪未满十八勿入下载 | 亚洲国产综合无码一区 | 熟妇人妻中文av无码 | 日韩在线不卡免费视频一区 | 欧美一区二区三区视频在线观看 | 99久久久无码国产精品免费 | a国产一区二区免费入口 | 国产激情无码一区二区app | 中文毛片无遮挡高清免费 | 国精产品一区二区三区 | 精品久久综合1区2区3区激情 | 国产成人无码午夜视频在线观看 | 亚洲综合色区中文字幕 | 久久精品丝袜高跟鞋 | √天堂中文官网8在线 | 四虎永久在线精品免费网址 | 国内精品久久久久久中文字幕 | 亚洲经典千人经典日产 | 男人扒开女人内裤强吻桶进去 | 亚洲熟妇色xxxxx欧美老妇 | 欧美日韩一区二区免费视频 | 综合人妻久久一区二区精品 | 青草视频在线播放 | 国产无遮挡吃胸膜奶免费看 | 无码毛片视频一区二区本码 | 亚洲自偷自偷在线制服 | 中国大陆精品视频xxxx | 蜜臀aⅴ国产精品久久久国产老师 | 国产亚洲视频中文字幕97精品 | 国产口爆吞精在线视频 | 内射白嫩少妇超碰 | 免费视频欧美无人区码 | 99久久久无码国产aaa精品 | 国产精品嫩草久久久久 | 红桃av一区二区三区在线无码av | 中文无码成人免费视频在线观看 | 亚洲国产一区二区三区在线观看 | 男女作爱免费网站 | 撕开奶罩揉吮奶头视频 | 成熟女人特级毛片www免费 | 国产香蕉尹人综合在线观看 | 偷窥日本少妇撒尿chinese | 一本一道久久综合久久 | 大屁股大乳丰满人妻 | 成 人 网 站国产免费观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 中文字幕无码免费久久99 | 国产在线一区二区三区四区五区 | 亚洲色无码一区二区三区 | 国产偷抇久久精品a片69 | 欧洲极品少妇 | 动漫av网站免费观看 | 亚洲伊人久久精品影院 | 久久亚洲精品成人无码 | 亚洲精品国产精品乱码视色 | 未满小14洗澡无码视频网站 | 97精品国产97久久久久久免费 | 亚洲欧美日韩成人高清在线一区 | 亚洲啪av永久无码精品放毛片 | 欧美精品一区二区精品久久 | 国产乱人伦偷精品视频 | 国产精品丝袜黑色高跟鞋 | 麻豆精品国产精华精华液好用吗 | 大肉大捧一进一出好爽视频 | 秋霞成人午夜鲁丝一区二区三区 | 无码国模国产在线观看 | 国产亚洲精品久久久久久 | 水蜜桃亚洲一二三四在线 | 亚洲狠狠婷婷综合久久 | 波多野结衣高清一区二区三区 | 97人妻精品一区二区三区 | 在线视频网站www色 | 国内老熟妇对白xxxxhd | 77777熟女视频在线观看 а天堂中文在线官网 | 纯爱无遮挡h肉动漫在线播放 | 熟女体下毛毛黑森林 | 欧美一区二区三区 | 国产在线一区二区三区四区五区 | 久久综合给久久狠狠97色 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲日本一区二区三区在线 | 国产成人综合美国十次 | 国产精品美女久久久久av爽李琼 | 亚洲乱亚洲乱妇50p | 国产一区二区三区四区五区加勒比 | 婷婷五月综合缴情在线视频 | 亚洲成色在线综合网站 | 中文字幕人成乱码熟女app | a片在线免费观看 |