JSON 배열이 정렬 된 목록, 다음과 같이 작성된다 : JSON 오브젝트 같이 작성된라는 목록이다
[ <item1>, <item2>, <item3> ]
동안 :
가
{
<name1>: <item1>,
<name2>: <item2>
}
Qt를에서는 QJsonArray
가 동등 QVariantList
(QList<QVariant>
) 및 QJsonObject
은 QVariantMap
(QMap<QString, QVariant>
)과 같습니다.
당신이 사용해야하는 파일은 파싱 할 파일에 따라 다릅니다. 위키 백과의 예를 복용 예를 들어 :
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
}
당신은 phoneNumbers
의 목록을 얻을 수있는 QJsonArray
을 사용, phoneNumbers
의 각 요소는 2 개라는 값에 whith QJsonObject
이다 type
및 number
.
당신이 JSON 요소를 조작해야하지만 당신은 그 형태를 인식하지 않는 코드의 경우 중 하나입니다 QJsonValue
사용할 수 있습니다 : 그건, QJsonObject
, QJsonArray
, bool
, double
또는 QString
흠을! 'json' 데이터 소스가 "하나의 레코드"만을 포함하고 있다면'QJsonArray' 대신에'QJsonObject'가 생성되었다고 생각했습니다. – KernelPanic
'isObject()'와'isArray()'둘 다'true'를 반환한다면 "유효하지 않은"'json' 포맷을 확신 할 수 있습니까? – KernelPanic
@ Kernelpanic 두 가지 모두를 되돌릴 수는 없습니다. 루트 요소는 배열과 객체가 될 수 없습니다. Qt 소스에서'QJsonDocument :: isArray()'는 인라인'bool isArray()로 구현 된'QJsonPrivate :: Base :: isArray()'를 호출합니다. const {return! isObject(); }'. 또한'QJsonDocument :: isNull()'과'QJsonDocument :: fromJson()'의 두 번째 매개 변수로 유효하지 않은 JSON을 확인할 수 있습니다. –