IOS 에서 JSon 해석 실례 방법 상세 설명(네 가지 방법)
"제 이 슨 코드 형식 이 혼 란 스 러 워 서 사용 할 수 있 습 니 다."http://www.bejson.com/'사이트 에서 JSON 포맷 검 사 를 실시 합 니 다(링크 를 열 려 면 클릭).이 사 이 트 는 제 이 슨 코드 의 오 류 를 감지 할 수 있 을 뿐만 아니 라 제 이 슨 의 데이터 내용 을 보기 로 표시 할 수 있어 편리 하 다.
IOS 5 부터 애플 은 제 이 슨 에 대한 네 이 티 브 지원(NSJSONserialization)을 제 공 했 지만,이전 iOS 버 전 을 호 환 하기 위해 제3자 라 이브 러 리 를 사용 해 제 이 슨 을 해석 할 수 있다.
본 고 는 터치 제 이 슨,SBJSon,JSONkit,iOS 5 가 지원 하 는 원생 제 이 슨 방법 을 소개 하고 국가 기상 국 API,터치 제 이 슨,SBJSon 을 분석 하려 면 그들의 라 이브 러 리 를 다운로드 해 야 한다.
TouchJSon 패키지 다운로드:http://xiazai.jb51.net/201612/yuanma/TouchJson(jb51.net)
SBJSon 패키지 다운로드:http://xiazai.jb51.net/201612/yuanma/SBJson(jb51.net)
JSONKIT 패키지 다운로드:http://xiazai.jb51.net/201612/yuanma/JSONKit(jb51.net)
아래 의 전체 프로그램 원본 패키지 다운로드:http://xiazai.jb51.net/201612/yuanma/SBJsonwz(jb51.net)
PS:
국가 기상 국 이 제공 한 일기예보 인터페이스
인터페이스 주 소 는 세 가지 가 있 습 니 다.
http://www.weather.com.cn/data/sk/101010100.html
http://www.weather.com.cn/data/cityinfo/101010100.html
http://m.weather.com.cn/data/101010100.html
세 번 째 인터페이스 정 보 는 비교적 상세 하고 6 일의 날 씨 를 제공 합 니 다.API 가 돌아 오 는 정 보 는 무료 일기예보 인터페이스 API 및 전국 모든 지역 코드 오픈!국립 기상 청 제공) 을 참조 하 십시오.전국 각 도시 가 이 id 번호 에 대응 하고 id 가 좋 으 면 각 도시 가 날씨 에 대응 하 는 것 을 분석 할 수 있 습 니 다.
JSON 을 해석 하 는 네 가지 방법 을 소개 한다.
먼저 새로운 프로젝트 를 만 듭 니 다.(ARC 메커니즘 을 선택 하지 않도록 주의 하 십시오)다음 컨트롤 을 추가 합 니 다.
위의 그림 과 같다.다음 전시 프로그램 코드:
파일 ViewController.h 중:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (retain, nonatomic) IBOutlet UITextView *txtView;
- (IBAction)btnPressTouchJson:(id)sender;
- (IBAction)btnPressSBJson:(id)sender;
- (IBAction)btnPressIOS5Json:(id)sender;
- (IBAction)btnPressJsonKit:(id)sender;
@end
파일 ViewController.m 의 주요 코드:(1)TouchJSon 해석 방법 사용:(가방 가 져 오기:\#import"TouchJSon/JSON/CJSONdeserializer.h")
// TouchJson
- (IBAction)btnPressTouchJson:(id)sender {
// API
NSURL *url = [NSURL URLWithString:@"http://m.weather.com.cn/data/101010100.html"];
// NSError ,
NSError *error;
NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
NSLog(@"jsonString--->%@",jsonString);
// , UTF8,
NSDictionary *rootDic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
// Json ,
NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];
NSLog(@"weatherInfo--->%@",weatherInfo);
//
txtView.text = [NSString stringWithFormat:@" %@ %@ %@ :%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
}
(2)SBJSon 해석 방법 사용:(가방 가 져 오기:\#import"SBJSon/SBJSon.h")
// SBJson
- (IBAction)btnPressSBJson:(id)sender {
NSURL *url = [NSURL URLWithString:@"http://m.weather.com.cn/data/101180701.html"];
NSError *error = nil;
NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary *rootDic = [parser objectWithString:jsonString error:&error];
NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];
txtView.text = [NSString stringWithFormat:@" %@ %@ %@ :%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
}
(3)IOS 5 자체 분석 클래스 NSJSONserialization 방법 으로 해석:(패키지 가 져 올 필요 없 음,IOS 5 지원,저 버 전 IOS 지원 하지 않 음)
- (IBAction)btnPressIOS5Json:(id)sender {
NSError *error;
// NSURL
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101180601.html"]];
// url NSData
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//IOS5 NSJSONSerialization response
NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];
txtView.text = [NSString stringWithFormat:@" %@ %@ %@ :%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
NSLog(@"weatherInfo --》%@", weatherDic );
}
(4)JSONkit 해석 방법 사용:(가방 가 져 오기:\#import"JSONkit/JSONkit.h")
- (IBAction)btnPressJsonKit:(id)sender {
// json “ ” , value 、 , objectFromJSONString
NSString *json1 = @"{\"a\":123, \"b\":\"abc\"}";
NSLog(@"json1:%@",json1);
NSDictionary *data1 = [json1 objectFromJSONString];
NSLog(@"json1.a:%@",[data1 objectForKey:@"a"]);
NSLog(@"json1.b:%@",[data1 objectForKey:@"b"]);
[json1 release];
// json , value array、object, objectFromJSONString, ( : php/json_encode json , NSString json , ), objectFromJSONStringWithParseOptions:
NSString *json2 = @"{\"a\":123, \"b\":\"abc\", \"c\":[456, \"hello\"], \"d\":{\"name\":\" \", \"age\":\"32\"}}";
NSLog(@"json2:%@", json2);
NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];
NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);
NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);
[json2 release];
}
또한 iOS 5 에 JSON 이 분석 한 API 가 추가 되 었 기 때문에 우 리 는 이 를 다른 5 개의 오픈 소스 JSON 분석 라 이브 러 리 와 분석 속 도 를 테스트 했 습 니 다.다음은 테스트 결과 입 니 다.저희 가 선택 한 테스트 대상 은 다음 과 같은 프레임 워 크 를 포함 합 니 다.그 중에서 NSJSONserialization 은 iOS 5 시스템 에 추 가 된 JSON 분석 API 입 니 다.iOS 5 환경 이 필요 합 니 다.더 낮은 버 전에 서 테스트 를 하려 면 해당 코드 호출 을 차단 해 야 합 니 다.
- [SBJSON (json-framework)](http://code.google.com/p/json-framework/)
- [TouchJSON (from touchcode)](http://code.google.com/p/touchcode/)
- [YAJL (objective-C bindings)](http://github.com/gabriel/yajl-objc)
- [JSONKit](https://github.com/johnezang/JSONKit)
- [NextiveJson](https://github.com/nextive/NextiveJson)
-[NSJSONSerialization](http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40010946)
우 리 는 json 형식의 데 이 터 를 포함 하 는 네 개의 파일 을 선택 하여 테스트 를 진행 했다.각 파일 마다 100 개의 분석 동작 을 하여 분석 시간 을 비교 합 니 다......
테스트 결과 에 따 르 면 시스템 의 API 분석 속도 가 가장 빠 르 고 우 리 는 프로젝트 에서 선택 하여 사용 하 는 것 도 비교적 광범 위 한 SBJSON 의 분석 속도 가 꼴찌 에서 두 번 째 로 떨 어 지 는 것 으로 나 를 크게 놀 라 게 했다.
시스템 API 와 가 까 운 것 은 JSONkit 일 것 이다.
API 의 열 린 인터페이스 와 사용 방식 을 비교 하지 않 았 습 니 다.만약 에 상기 분석 속 도 를 바탕 으로 하 는 테스트 라면:
1:iOS 5 는 시스템 의 API 를 선택 하여 진행 해 야 합 니 다.
2:시스템 API 를 사용 할 수 없 는 사람 은 JSONkit 를 선택해 야 합 니 다.
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 IOS 에서 JSon 이 실례 를 해석 하 는 방법 에 대한 상세 한 설명(네 가지 방법)의 모든 서술 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.만약 에 궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 여러분 에 게 답 할 것 입 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.