>일반적인 문제 >JSON 데이터 구문 분석이란 무엇입니까?

JSON 데이터 구문 분석이란 무엇입니까?

(*-*)浩
(*-*)浩원래의
2019-05-20 09:36:276857검색

Json 데이터 구문 분석 방법: 먼저 JSON 파일을 만든 다음 클래스에 "document.h" 및 "cocos-ext.h" 헤더 파일을 포함시킨 다음 FileUtils를 통해 JSON 파일 경로를 얻습니다. Document 개체는 JSON 데이터를 구문 분석하여 최종적으로 다양한 유형의 데이터 값을 얻을 수 있습니다.

JSON 데이터 구문 분석이란 무엇입니까?

JOSN 데이터 구문 분석 프로세스는 먼저 JSON 파일을 만든 다음 포함해야 합니다. class document.h 및 cocos-ext.h 헤더 파일에 포함된 다음 FileUtils를 통해 JSON 파일 경로를 얻고 Document 객체를 통해 JSON 데이터를 구문 분석하고 마지막으로 다양한 유형의 데이터 값을 얻습니다.

JSON(JavaScript Object Notation)은 가벼운 데이터 교환 형식입니다. 사람들이 쉽게 읽고 쓸 수 있도록 하며, 기계가 구문 분석하고 생성하는 것도 용이하게 합니다. JSON은 프로그래밍 언어와 완전히 독립적인 텍스트 형식을 사용하지만 C와 유사한 언어 습관(C, C++, C#, Java, JavaScript, Perl 및 Python 등 포함)도 사용합니다. 이러한 특성으로 인해 JSON은 이상적인 데이터 교환 언어가 됩니다. .

JSON 데이터 구문 분석

예를 들어 Cocos2d.x 루트 디렉터리의 external/json 디렉터리 아래에는 JSON 관련 클래스가 있습니다. 처리 중, 여기에 헤더 파일 document.h를 사용합니다. 이 파일의 두 가지 핵심 클래스는 GenericValue와 GenericDocument가 GeneficValue를 상속합니다. GenericDocument는 문서 내용 구문 분석과 같은 문서 내용을 처리하는 데 사용됩니다. GenericValue는 주로 값 내용, 즉 문서 내부의 키-값 쌍 내용을 처리하며 키를 기반으로 값을 얻을 수 있습니다. GenericValue와 GenericDocument가 모두 다시 입력되었습니다. 따라서 유형 정의 뒤에 이름을 사용할 수 있습니다.

ypedef GenericDocument>Document;

typedef GenericValue>Value;

값이 오버로드되었습니다. 배열 아래 첨자 연산자 []이므로 이 연산자를 사용하여 JSON 파일의 키를 기반으로 값을 가져올 수 있습니다.

const GenericValue & 연산자 [] (const Ch* 이름) const{

const_cast(*this)[name];}

#🎜🎜 #Value는 또한 다양한 데이터 유형을 기반으로 해당 값을 얻기 위한 일련의 GetXXX 메소드를 제공합니다.

JSON 데이터를 구문 분석하는 방법을 보여주기 위해 예제가 사용됩니다. 단계는 다음과 같습니다.

JSON 파일 만들기# 🎜🎜## 🎜🎜#

다음 콘텐츠로 프로젝트의 클래스 폴더 아래에 JSON 파일을 만듭니다.

{"pets":["dog","cat"],"stuInfo":{
"stuAge":23,"stuName":"rose","birthday":"1990-01-12"},"username","tom","other":[true,30]}
이 파일에서 pet은 애완동물을 나타내는 배열입니다. 값: dog 및 pet; stuInfo는 학생 정보이고 그 뒤에는 사용자 이름이 있으며 마지막으로 다른 배열이 있습니다.

클래스에 document.h 및 cocos-ext.h 헤더 파일 포함

#include "cocos-ext.h"
#include "json/document.h"

다음을 통해 JSON 파일 경로 가져오기 FileUtils

const char* file_path = FileUtils::getInstance()->fullPathForFilename("hello.json").c_str();
log("文件路径path=%s",file_path);

문서 객체를 통해 JOSN 데이터 구문 분석

//文档对象
rapidjson::Document dl;
//获得JSON字符串内容
std::string contentStr = FileUtils::getInstance()->getStringFromFile(file_path);
//解析
dl.Parse<0>(contentStr.c_str());
//输出JSON文件的内容
printf("%s\n",contentStr.c_str());
다양한 유형의 데이터 값 가져오기 ​​

Through 배열 첨자 연산자 [], 키에 따라 Value를 얻고 Value의 GetXXX 메서드를 사용하여 다양한 유형의 데이터 값을 얻습니다.

//获取JSON中数组的方法(宠物数组)[dog,cat]
const rapidjson::Value & v=d1["pets"];
for(unsigned int i=0;i<v.Size();++i){
const rapidjson::Value & val=v[i];
log("%s",val.GetString());
}
//根据key获得value(学生信息)"stuInfo":{"stuAge":23,"stuName":"rose","birthday":"1990-01-12"}
const rapidjson::Value & v2=d1["stuInfo"];
//获得整型值
const rapidjson::Value&val1 = v2["stuAge"];
log("val.GetString()=%d",vall.GetInt());
//获得字符串值
const rapidjson::Value&val2 = v2["stuName"];
log("val.GetString()=%s",val2.GetString());
//获得字符串值
const rapidjson::Value&val3 = v2["birthday"];
log("val.GetString()=%s",val3.GetString());
//根据key获得value(other)"other":[true,30]
const rapidjson::Value&v3=d1["other"];
for(unsigned int i=0;i<v3.Size();++i){
    const rapidjson::Value&val=v3[i];
    if(val.IsBool()){
    log("%d",val.GetBool());
    }
    if(val.IsInt()){
    log("%d",val.GetInt());
    } 
}

위 내용은 JSON 데이터 구문 분석이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:비는 무엇입니까?다음 기사:비는 무엇입니까?