fix some typos
This commit is contained in:
parent
5aa79b7272
commit
8684c9960d
@ -140,7 +140,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
* Redo all documentation (English, Simplified Chinese)
|
||||
|
||||
### Changed
|
||||
* Copyright ownership transfered to THL A29 Limited (a Tencent company).
|
||||
* Copyright ownership transferred to THL A29 Limited (a Tencent company).
|
||||
* Migrating from Premake to CMAKE (#192)
|
||||
* Resolve all warning reports
|
||||
|
||||
|
@ -241,7 +241,7 @@ Some techniques about using DOM API is discussed here.
|
||||
|
||||
## DOM as SAX Event Publisher
|
||||
|
||||
In RapidJSON, stringifying a DOM with `Writer` may be look a little bit weired.
|
||||
In RapidJSON, stringifying a DOM with `Writer` may be look a little bit weird.
|
||||
|
||||
~~~~~~~~~~cpp
|
||||
// ...
|
||||
|
@ -10,7 +10,7 @@ The earlier [RFC4627](http://www.ietf.org/rfc/rfc4627.txt) stated that,
|
||||
|
||||
> (in §6) JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON is written in UTF-8, JSON is 8bit compatible. When JSON is written in UTF-16 or UTF-32, the binary content-transfer-encoding must be used.
|
||||
|
||||
RapidJSON supports various encodings. It can also validate the encodings of JSON, and transconding JSON among encodings. All these features are implemented internally, without the need for external libraries (e.g. [ICU](http://site.icu-project.org/)).
|
||||
RapidJSON supports various encodings. It can also validate the encodings of JSON, and transcoding JSON among encodings. All these features are implemented internally, without the need for external libraries (e.g. [ICU](http://site.icu-project.org/)).
|
||||
|
||||
[TOC]
|
||||
|
||||
|
16
doc/faq.md
16
doc/faq.md
@ -116,7 +116,7 @@
|
||||
~~~~~~~~~~cpp
|
||||
Value(kObjectType).Swap(d);
|
||||
~~~~~~~~~~
|
||||
or equivalent, but sightly longer to type:
|
||||
or equivalent, but slightly longer to type:
|
||||
~~~~~~~~~~cpp
|
||||
d.Swap(Value(kObjectType).Move());
|
||||
~~~~~~~~~~
|
||||
@ -140,11 +140,11 @@
|
||||
}
|
||||
~~~~~~~~~~
|
||||
|
||||
The most important requirement to take care of document and value life-cycle as well as consistent memory managent using the right allocator during the value transfer.
|
||||
The most important requirement to take care of document and value life-cycle as well as consistent memory management using the right allocator during the value transfer.
|
||||
|
||||
Simple yet most efficient way to achieve that is to modify the `address` definition above to initialize it with allocator of the `person` document, then we just add the root member of the value:
|
||||
~~~~~~~~~~cpp
|
||||
Documnet address(person.GetAllocator());
|
||||
Document address(person.GetAllocator());
|
||||
...
|
||||
person["person"].AddMember("address", address["address"], person.GetAllocator());
|
||||
~~~~~~~~~~
|
||||
@ -174,7 +174,7 @@ Alternatively, if we don't want to explicitly refer to the root value of `addres
|
||||
|
||||
3. Why do I need to provide the length of string?
|
||||
|
||||
Since C string is null-terminated, the length of string needs to be computed via `strlen()`, with linear runtime complexity. This incurs an unncessary overhead of many operations, if the user already knows the length of string.
|
||||
Since C string is null-terminated, the length of string needs to be computed via `strlen()`, with linear runtime complexity. This incurs an unnecessary overhead of many operations, if the user already knows the length of string.
|
||||
|
||||
Also, RapidJSON can handle `\u0000` (null character) within a string. If a string contains null characters, `strlen()` cannot return the true length of it. In such case user must provide the length of string explicitly.
|
||||
|
||||
@ -204,7 +204,7 @@ Alternatively, if we don't want to explicitly refer to the root value of `addres
|
||||
|
||||
2. Can it validate the encoding?
|
||||
|
||||
Yes, just pass `kParseValidateEncodingFlag` to `Parse()`. If there is invalid encoding in the stream, it wil generate `kParseErrorStringInvalidEncoding` error.
|
||||
Yes, just pass `kParseValidateEncodingFlag` to `Parse()`. If there is invalid encoding in the stream, it will generate `kParseErrorStringInvalidEncoding` error.
|
||||
|
||||
3. What is surrogate pair? Does RapidJSON support it?
|
||||
|
||||
@ -248,7 +248,7 @@ Alternatively, if we don't want to explicitly refer to the root value of `addres
|
||||
|
||||
1. Is RapidJSON really fast?
|
||||
|
||||
Yes. It may be the fastest open source JSON library. There is a [benchmark](https://github.com/miloyip/nativejson-benchmark) for evaluating performance of C/C++ JSON libaries.
|
||||
Yes. It may be the fastest open source JSON library. There is a [benchmark](https://github.com/miloyip/nativejson-benchmark) for evaluating performance of C/C++ JSON libraries.
|
||||
|
||||
2. Why is it fast?
|
||||
|
||||
@ -262,13 +262,13 @@ Alternatively, if we don't want to explicitly refer to the root value of `addres
|
||||
|
||||
The design of RapidJSON aims at reducing memory footprint.
|
||||
|
||||
In the SAX API, `Reader` consumes memory portional to maximum depth of JSON tree, plus maximum length of JSON string.
|
||||
In the SAX API, `Reader` consumes memory proportional to maximum depth of JSON tree, plus maximum length of JSON string.
|
||||
|
||||
In the DOM API, each `Value` consumes exactly 16/24 bytes for 32/64-bit architecture respectively. RapidJSON also uses a special memory allocator to minimize overhead of allocations.
|
||||
|
||||
5. What is the purpose of being high performance?
|
||||
|
||||
Some applications need to process very large JSON files. Some server-side applications need to process huge amount of JSONs. Being high performance can improve both latency and throuput. In a broad sense, it will also save energy.
|
||||
Some applications need to process very large JSON files. Some server-side applications need to process huge amount of JSONs. Being high performance can improve both latency and throughput. In a broad sense, it will also save energy.
|
||||
|
||||
## Gossip
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Performance
|
||||
|
||||
There is a [native JSON benchmark collection] [1] which evaluates speed, memory usage and code size of various operations among 37 JSON libaries.
|
||||
There is a [native JSON benchmark collection] [1] which evaluates speed, memory usage and code size of various operations among 37 JSON libraries.
|
||||
|
||||
[1]: https://github.com/miloyip/nativejson-benchmark
|
||||
|
||||
|
@ -211,7 +211,7 @@ p.Stringify(sb);
|
||||
std::cout << sb.GetString() << std::endl;
|
||||
~~~
|
||||
|
||||
It can also stringify to URI fragment reprsentation by `StringifyUriFragment()`.
|
||||
It can also stringify to URI fragment representation by `StringifyUriFragment()`.
|
||||
|
||||
# User-Supplied Tokens {#UserSuppliedTokens}
|
||||
|
||||
|
@ -126,7 +126,7 @@ When the `Reader` encounters a JSON number, it chooses a suitable C++ type mappi
|
||||
|
||||
When the `Reader` encounters the beginning of an object, it calls `StartObject()`. An object in JSON is a set of name-value pairs. If the object contains members it first calls `Key()` for the name of member, and then calls functions depending on the type of the value. These calls of name-value pairs repeat until calling `EndObject(SizeType memberCount)`. Note that the `memberCount` parameter is just an aid for the handler; users who do not need this parameter may ignore it.
|
||||
|
||||
Arrays are similar to objects, but simpler. At the beginning of an array, the `Reader` calls `BeginArary()`. If there is elements, it calls functions according to the types of element. Similarly, in the last call `EndArray(SizeType elementCount)`, the parameter `elementCount` is just an aid for the handler.
|
||||
Arrays are similar to objects, but simpler. At the beginning of an array, the `Reader` calls `BeginArray()`. If there is elements, it calls functions according to the types of element. Similarly, in the last call `EndArray(SizeType elementCount)`, the parameter `elementCount` is just an aid for the handler.
|
||||
|
||||
Every handler function returns a `bool`. Normally it should return `true`. If the handler encounters an error, it can return `false` to notify the event publisher to stop further processing.
|
||||
|
||||
|
@ -49,7 +49,7 @@ if (!d.Accept(validator)) {
|
||||
|
||||
Some notes:
|
||||
|
||||
* One `SchemaDocment` can be referenced by multiple `SchemaValidator`s. It will not be modified by `SchemaValidator`s.
|
||||
* One `SchemaDocument` can be referenced by multiple `SchemaValidator`s. It will not be modified by `SchemaValidator`s.
|
||||
* A `SchemaValidator` may be reused to validate multiple documents. To run it for other documents, call `validator.Reset()` first.
|
||||
|
||||
# Validation during parsing/serialization {#ParsingSerialization}
|
||||
|
@ -68,7 +68,7 @@ printf("t = %s\n", document["t"].GetBool() ? "true" : "false");
|
||||
t = true
|
||||
~~~~~~~~~~
|
||||
|
||||
JSON null can be queryed with `IsNull()`.
|
||||
JSON null can be queried with `IsNull()`.
|
||||
~~~~~~~~~~cpp
|
||||
printf("n = %s\n", document["n"].IsNull() ? "null" : "?");
|
||||
~~~~~~~~~~
|
||||
|
Loading…
x
Reference in New Issue
Block a user