Qt5에서 JSON의 해석

3968 단어 jsonqtqt5
QJsonDocument
QJsonDocument은 텍스트 표시를 기반으로 하는 UTF-8 인코딩을 할 수 있을 뿐만 아니라, Qt 자체의 이진 형식에서 이 파일을 읽고 쓸 수 있다.JSON 문서는 텍스트 기반 표현에서 QJsonDocument::fromJson () 을 사용하여 QJsonDocument로 변환할 수 있습니다.toJSON()이 문자로 다시 변환합니다.파서는 JSON을 바이너리 표현으로 변환하는 매우 빠르고 효율적입니다.
QJsonObject
QJsonObject 클래스는 JSON 객체를 패키지화하는 데 사용됩니다.JSON 객체는 키 값 쌍이며 여기서 키는 고유한 문자열이며 값은 QJsonValue로 표시됩니다.QJsonObject를 QVariantMap에서 변환/변환할 수 있습니다.예를 들어: {"object0": "value0", "object1": "value1", "object2": "value2"}
QJsonArray
QJsonArray 클래스는 JSON 배열을 캡슐화하는 데 사용됩니다.JSON 배열 목록 값이 목록은 패턴에서 QJsonValue 작업을 삽입하고 제거할 수 있습니다.QJsonArray는 QVariantList에서/로 변환할 수 있습니다.예를 들어: [{array0}, {array1}, {array2}] QJsonDocument가 유효하게 해석된 문서를 사용할 수 있습니다!iSNull() 판단.isArray() 및 isObject()를 사용하여 배열이나 객체가 포함되어 있는지 여부를 판단합니다.문서에 포함된 그룹이나 대상은array()나object()로 검색한 다음 읽거나 조종할 수 있습니다.
일기예보 JSON 해석 실례
JSON 컨텐트:
{"desc":"OK","status":1000,"data":{"wendu":"-5","ganmao":"      ,      ,       。            。","forecast":[{"fengxiang":"  ","fengli":"4-5 ","high":"   -3℃","type":" ","low":"   -10℃","date":"24    "},{"fengxiang":"     ","fengli":"   ","high":"   2℃","type":" ","low":"   -7℃","date":"25    "},{"fengxiang":"     ","fengli":"3-4 ","high":"   2℃","type":" ","low":"   -9℃","date":"26    "},{"fengxiang":"     ","fengli":"   ","high":"   2℃","type":"  ","low":"   -6℃","date":"27    "},{"fengxiang":"     ","fengli":"   ","high":"   4℃","type":" ","low":"   -4℃","date":"28    "}],"yesterday":{"fl":"5-6 ","fx":"  ","high":"   -11℃","type":" ","low":"   -14℃","date":"23    "},"aqi":"50","city":"  "}}

확인 코드:
    QString Json =    JSON  ;
    QByteArray byte_array;
    QJsonParseError json_error;
    QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array.append(Json),&json_error);

    if(json_error.error == QJsonParseError::NoError)
    {
        QJsonObject obj = parse_doucment.object();

<span style="white-space:pre">	</span>/*   if( obj.contains("desc") )        "desc"     take      */

        QJsonValue desc = obj.take("desc");
        if(desc.toString() != "OK")
        {
            qDebug()<<"    
";             return;         }         QJsonValue data = obj.take("data");         today.ganmao = data.toObject().take("ganmao").toString();         QJsonValue forecast1 = data.toObject().take("forecast");         QJsonArray forecast2 = forecast1.toArray();         for(int i=0; i<5; i++)         {             QJsonValue value = forecast2.at(i);             QJsonObject object = value.toObject();             forecast[i].fengxiang = object.take("fengxiang").toString();             forecast[i].date = object.take("date").toString();             forecast[i].fengli = object.take("fengli").toString();             forecast[i].high = object.take("high").toString();             forecast[i].low = object.take("low").toString();             forecast[i].type = object.take("type").toString();         }     }     else     {         qDebug()<<"Json ";         return;     }

참조:Qt의 JSON 생성 및 해석

좋은 웹페이지 즐겨찾기