I want to fetch specified data html_instructions from the below URL. I could take all data from this URL.
But I need the specific html_instructions only. How can I split the data?
I used the following code to convert the URL to NSData:
NSString *url = [NSString stringWithFormat:#"http://maps.googleapis.com/maps/api/directions/json?origin=Chennai&destination=Madurai&sensor=false"];
NSURL *googleRequestURL=[NSURL URLWithString:url];
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL: googleRequestURL];
});
Use this as :
NSData* data = [NSData dataWithContentsOfURL:googleRequestURL];
if (data == nil) {
return;
}
NSError* error;
NSMutableDictionary* json = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error];
NSLog(#"Json : %#",json);
Hope it helps you.
I parsed the json from the following url and printed the html instructions try copy this code and try:
http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&sensor=false
NSData *receivedData = Received data from url;
NSError* error;
NSMutableDictionary* parsedJson = [NSJSONSerialization JSONObjectWithData:receiveData options:kNilOptions error:&error];
NSArray *allkeys = [parsedJson allKeys];
for(int i = 0; i < allkeys.count; i++){
NSLog(#"############################");
if([[allkeys objectAtIndex:i] isEqualToString:#"routes"]){
NSArray *arr = [responseJsonValue objectForKey:#"routes"];
NSDictionary *dic = [arr objectAtIndex:0];
NSLog(#"ALL KEYS FROM ROUTE: %#", [dic allKeys]);
NSArray *legs = [dic objectForKey:#"legs"];
NSLog(#"legs array count %d", legs.count);
for(int i = 0; i < legs.count; i++){
NSArray *stepsArr = [[legs objectAtIndex:i] objectForKey:#"steps"];
for (int i = 0; i < stepsArr.count; i++) {
NSLog(#"HTML INSTRUCTION %#", [[stepsArr objectAtIndex:i] objectForKey:#"html_instructions"]);
}
}
}
NSLog(#"############################");
}
Related
I get a returnString from a WebService in iOS:
[
{"datum":"2013-07-24
09:38:43","nummer":"1017348010239480212208","anmerkung":"Elektronische
Auftragsdaten wurden vom Versender
\u00fcbermittelt"},{"datum":"2013-07-24
09:38:44","nummer":"1017348010239480212208","anmerkung":"Sendung in
Verteilung"},{"datum":"2013-07-24
09:38:44","nummer":"1017348010239480212208","anmerkung":"Sendung in
Verteilung"},{"datum":"2013-07-24
09:38:44","nummer":"1017348010239480212208","anmerkung":"Sendung in
Zustellung"},{"datum":"2013-07-24
09:26:06","nummer":"1017348010239480212208","anmerkung":"Empf\u00e4nger
nicht angetroffen - benachrichtigt"},{"datum":"2013-07-19
06:24:42","nummer":"1017348010239480212208","anmerkung":"Sendung in
Post-Empfangsbox eingelangt"}
]
the Objective C Code works fine:
#import "SBJson.h"
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
self.textfeld.text = [NSString stringWithFormat: #"%#", returnString];
I try to format the Response with NSMutableArray or NSArray and JSONValue but without success :
NSMutableArray *meinErgebnis = [responseString JSONValue];
NSLog(#"%#",[[meinErgebnis objectAtIndex:0] objectAtIndex:1]);
How to format the returnCode like that?
Nummer: 1017348010239480212208
Anmerkung: Sendung in Verteilung
Nummer: 1017348010239480212208
Anmerkung: Sendung in Post-Empfangsbox
You can obtain Data with following method,
id Data = [NSJSONSerialization JSONObjectWithData:fetchedData options:kNilOptions error:&error];
Then you can loop the data accordingly. For your example,
for(id object in Data)
{
NSLog(#"%#",[object valueForKey:#"nummer"]);
NSLog(#"%#",[object valueForKey:#"anmerkung"]);
}
The loop used above is of fast Enumeration type. Hope this helps.
Use following code for get all the values of nummer and anmerkung from your mutable array.
NSMutableArray *meinErgebnis = [responseString JSONValue];
for(int i = 0; i < meinErgebnis.count; i++)
{
NSLog(#"%#",[[meinErgebnis objectAtIndex:i] objectForKey:#"nummer"]);
NSLog(#"%#",[[meinErgebnis objectAtIndex:i] objectForKey:#"anmerkung"]);
}
Hi, I'm creating a JSON request with code below and its working perfectly:
for (int i=0; i<= [urls count]-1; i++) {
self.items=[[NSMutableDictionary alloc] init];
[self.items setObject:[names objectAtIndex:i] forKey:#"results"];
[self.items setObject:[urls objectAtIndex:i] forKey:#"URL"];
[self.list addObject:_soccerList];
}
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:_list
options:0
error:&error];
self.results=[NSJSONSerialization
JSONObjectWithData:jsonData
options:0
error:&error];
But, I would like to add this header to the JSON request where I am adding count of the items.Any of you knows how can I do this?
{
"resultCount":50,
"results": [
/// json content
]
}
I'll really appreciate your help.
You can do it like:
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:#"50", #"resultCount", _list1, #"results", nil];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
options:0
error:&error];
In for loop before line adding _soccerList,add the following line
NSDictionary *dic=[[NSDictionary alloc] initWithObjectsAndKeys:[self.items count],#"resultCount",nil];
[self.list addObject:dic];
I have a database in SQLite, and a table named xyz which is empty. I want to import data from a csv file into that table.
Now, when I try to import csv file, it is asking me to import it into the main table, but I want to import the data into my xyz table.
How can I do that?
You can do as this way,
First you need to add your csv file in bundle.
Then you can call this method where you want to add data in database from csv
-(void)loadCSVData{
NSString *path1=[[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:#"YOUR_CSV_FILENAME" ofType:#"csv"] usedEncoding:&encoding error:nil];
NSArray *messArr=[path1 componentsSeparatedByString:#"\n"];
if(messArr)
{
for(int i=1;i<=[messArr count]-2;i++)
{
NSMutableDictionary *d=[[NSMutableDictionary alloc] init];
NSString *StrValue=[NSString stringWithFormat:#"%#",[messArr objectAtIndex:i]];
StrValue=[StrValue stringByReplacingOccurrencesOfString:#"\"" withString:#""];
StrValue=[StrValue stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// Here give whatever saperator you need to saperate data
NSArray *arr=[StrValue componentsSeparatedByString:#","];
[d setValue:[arr objectAtIndex:0] forKey:#"YOUR_TABLE_FIELD_1"];
[d setValue:[arr objectAtIndex:1] forKey:#"YOUR_TABLE_FIELD_2"];
[d setValue:[arr objectAtIndex:2] forKey:#"YOUR_TABLE_FIELD_3"];
//Here add logic to insert row in your database table
}
}
i done with below code you need to just impliment that:-
-(void)restore{
#try {
NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:#"%#%#?userid=%#",kHOSTPATH,kCSVLIST,[[cntrAppDelegate setServerDetails] valueForKey:#"kUSERID"]]];
NSMutableURLRequest *requestMutable = [[NSMutableURLRequest alloc] init];
[requestMutable setURL:url];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:requestMutable returningResponse:&response error:&error];
NSLog(#"Response code: %d", [response statusCode]);
if ([response statusCode] >=200 && [response statusCode] <300)
{
NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(#"Response ==> %#", responseData);
SBJsonParser *jsonParser = [SBJsonParser new];
NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];
NSLog(#"--------=========%#============-------------",jsonData);
NSDictionary *dic = [jsonData objectForKey:#"Root"];
NSLog(#"---------------------ROOT VALUE IS %#",dic);
NSLog(#"----------------COUNT IS %d",[dic count]);
for (int i = 0; i < [dic count]; i++)
{
NSString *str = [[dic valueForKey:#"CSV_File"]objectAtIndex:i];
NSLog(#"STR IS %#",str);
[self.arrListOfCSV addObject:str];
}
if ([jsonData valueForKey:#"Root"] == 0)
{
}
else
{
}
}
You should better import data in Linux. And in Disk Operation System after into the SQLite,enter
separator",";
importchoose your csv pathxyz. When you create table named xyz, the name should be agree with your csv files .
I've been banging my head on the wall all day because of this.
I'm trying to parse this JSON blob here.
This is what I'm using:
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSDictionary *results = [responseString JSONValue];
NSArray *allTweets = [[results objectForKey:#"response"] objectForKey:#"posts"];
However, when I try to do this:
NSURL *url = [NSURL URLWithString:[[[[aTweet objectForKey:#"posts"] objectForKey:#"photos"] objectForKey:#"original_size"] objectForKey:#"url"]];
It gives me no error but the *url is set as "null".
I've used CFShow for the NSDictionary but everything after the "photos" key comes out as a regular string and not JSON formatted.
Can anyone tell me why?
Thanks in advance for all your help.
try this.
for (int i = 0; i < [[[results objectForKey:#"response"] objectForKey:#"posts"] count]; i++) {
NSLog(#"url data = %#",[[[[[[[results objectForKey:#"response"]
objectForKey:#"posts"] objectAtIndex:i] objectForKey:#"photos"]
objectAtIndex:0] objectForKey:#"original_size"] objectForKey:#"url"]);
}
i have the following json value in console:
{"TokenID":"kuiHigen21","isError":false,"ErrorMessage":"","Result":[{"UserId":"153","FirstName":"Rocky","LastName":"Yadav","Email":"rocky#itg.com","ProfileImage":null,"ThumbnailImage":null,"DeviceInfoId":"12"}],"ErrorCode":900}
this is my server api :#"http://192.168.0.68:91/JourneyMapperAPI?RequestType=Login"
//api takes 5 parameters .
when i post data to server api values are posted to server and i get the above response in json format.
i want to parse the above the JSON value that i get in the response and save in sqlite database.
i am doing this code to parse the above JSON value:
-(void)connectionDidFinishLoadingNSURLConnection *)connection
{
NSString *loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] lengthwebData length] encoding:NSUTF8StringEncoding];
NSLog(#"%#",loginStatus);
self.webData = nil;
SBJSON *parser =[[SBJSON alloc]init];
NSURLRequest *request = [NSURLRequest requestWithURLNSURL URLWithString"http://192.168.0.68:91/JourneyMapperAPI?RequestType=Login.json"]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// Get JSON as a NSString from NSData response
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
//NSDictionary *object = [parser objectWithString:json_string error:nil];
// parse the JSON response into an object
// Here we're using NSArray since we're parsing an array of JSON status objects
NSArray *statuses = [parser objectWithString:json_string error:nil];
for (NSDictionary *status in statuses)
{
// You can retrieve individual values using objectForKey on the status NSDictionary
// This will print the tweet and username to the console
NSLog(#"%# - %#", [status objectForKey"Login"],[status objectForKey"LoginKey"]);
[connection release]; [webData release];
}
You should check out some of the JSON parsers, my personal favourite is json-framework. After you've included one of them in your project, where you've got your JSON response from your server:
// Get JSON as a NSString from NSData response
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *result = [json_string JSONValue];
NSArray *statuses = [result objectForKey:#"Result"];
which will return your array of results (where each object in the array is an NSDictionary).
You can save this to a database with the help of a model class, Result
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *result = [json_string JSONValue];
NSArray *values = [result objectForKey:#"Result"];
NSMutableArray *results = [[NSMutableArray alloc] init];
for (int index = 0; index<[values count]; index++) {
NSMutableDictionary * value = [values objectAtIndex:index];
Result * result = [[Result alloc] init];
result.UserId = [value objectForKey:#"UserId"];
result. FirstName = [value objectForKey:#"FirstName"];
...
[results addObject:result];
[result release];
}
use the array of results to save it to the database.
for (int index = 0; index<[results count]; index++) {
Result * result = [results objectAtIndex:index];
//save the object variables to database here
}