Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在iOS中将字典的NSArray转换为JSON数组_Iphone_Json_Cocoa_Cocoa Touch_Nsarray - Fatal编程技术网

Iphone 在iOS中将字典的NSArray转换为JSON数组

Iphone 在iOS中将字典的NSArray转换为JSON数组,iphone,json,cocoa,cocoa-touch,nsarray,Iphone,Json,Cocoa,Cocoa Touch,Nsarray,我需要以JSON数组格式向服务器发送NSArray。如何将其转换为JSON。这是我必须通过的NSArray示例 array([0] => array('latitude'=>'10.010490', 'longitude'=>'76.360779', 'altitude'=>'30.833334', 'timestamp'=>'11:17:23',

我需要以
JSON
数组格式向服务器发送
NSArray
。如何将其转换为
JSON
。这是我必须通过的
NSArray
示例

array([0] => array('latitude'=>'10.010490', 
                  'longitude'=>'76.360779', 
                   'altitude'=>'30.833334', 
                  'timestamp'=>'11:17:23', 
                      'speed'=>'0.00', 
                   'distance'=>'0.00');

[1] => array('latitude'=>'10.010688', 
            'longitude'=>'76.361378', 
             'altitude'=>'28.546305', 
            'timestamp'=>'11:19:26', 
                'speed'=>'1.614', 
             'distance'=>'198.525711')
 )`
所需的格式如下

[
  { "latitude":"10.010490",
   "longitude":"76.360779",
    "altitude":"30.833334",
   "timestamp":"11:17:23", 
       "speed":"0.00",
    "distance":"0.00"
  },    
  {
   "latitude":"10.010688",
  "longitude":"76.361378",
   "altitude":"28.546305",
  "timestamp":"11:19:26",
      "speed":"1.614",
   "distance":"198.525711" 
  }
]
有人有办法吗?提前感谢。

您可以使用iOS的或使用外部库,例如,将数据转换为JSON

我建议使用

转换一个
NSMutableArray
就像
NSString*jsonString=[yourArray-JSONRepresentation]一样简单


编辑:Jack Farnandish是对的,您必须先将其转换为NSDictionary,然后才能将其转换为Json。在我的示例中,NSMutableArray必须包含字典。数组仅用于在字符串的开头和结尾创建方括号

首先,您必须将您的结构更改为
NSDictionary
类和
NSArray
包含
NSDictionary
对象,然后在iOS 5中尝试JSONKit序列化,其效果优于标准的
NSJSONSerialization

导入
#import <JSONKit/JSON.h>

NSArray *array = // Your array here.
NSString *json = [array JSONString];

NSLog(@"%@", json);
NSArray*array=//这里是您的数组。 NSString*json=[array JSONString]; NSLog(@“%@”,json);

在我和作者的基准测试中,性能明显优于和其他人。

您所调用的服务是RESTful服务吗

NSDictionary *firstJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"10.010490", @"latitude",
                            @"76.360779", @"longitude",
                            @"30.833334", @"altitude",
                            @"11:17:23", @"timestamp",
                            @"0.00", @"speed",
                            @"0.00", @"distance",
                            nil];

  NSDictionary *secondJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"10.010490", @"latitude",
                            @"76.360779", @"longitude",
                            @"30.833334", @"altitude",
                            @"11:17:23", @"timestamp",
                            @"0.00", @"speed",
                            @"0.00", @"distance",
                            nil];

NSMutableArray * arr = [[NSMutableArray alloc] init];

[arr addObject:firstJsonDictionary];
[arr addObject:secondJsonDictionary];

NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@", jsonString);

如果是这样,我强烈建议使用RestKit。它执行对象序列化/反序列化。它还处理所有网络基础。非常有价值,并且维护良好。

检查教程,iOS 5.0中的JSON已清楚解释(序列化、反序列化)。

最简单、最好的方法

要将NSArray或NSMutableArray转换为jsonString,可以先将其转换为NSData,然后再将其转换为NSString。使用此代码

NSData* data = [ NSJSONSerialization dataWithJSONObject:yourArray options:NSJSONWritingPrettyPrinted error:nil ];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

它帮助了我,希望它也能帮助你。祝你一切顺利

它对我有效,但我希望以数组格式响应,而不是字符串格式。内联代码[{“纬度”:“10.010490”,“经度”:“76.360779”,“高度”:“30.833334”,“时间戳”:“11:17:23”,“速度”:“0.00”,“距离”:“0.00”},{“纬度”:“10.010688”,“经度”:“76.361378”,“高度”:“28.546305”,“时间戳”:“11:19:26”,“速度”:“1.614”,“距离”:“198.525711”}]“您只能以数组格式获得它。这是问题标题的正确答案。谢谢。公认的答案显示了一系列字典使用框架完成如此简单的任务并不是一个好主意。Update 2016 RestKit不再是一个维护框架。