【问题标题】:How to put JSON in to NSMutableArray如何将 JSON 放入 NSMutableArray
【发布时间】:2017-01-23 08:40:46
【问题描述】:

您好,我是 iOS 开发新手,目前在开发调度事件时遇到了问题

请告诉我如何添加 JSON 数据而不是硬编码数组。我只需要将 json 中的 customer_name、customer_id 替换为这个硬编码数据

这是我的日程安排按钮点击事件:

- (IBAction)schedule:(id)sender {

    FFCalendarViewController *rootController = [FFCalendarViewController new];
    [rootController setArrayWithEvents:[self arrayWithEvents]];


      [self.navigationController pushViewController:rootController animated:YES];


}

这是我的硬编码数组:

- (NSMutableArray *)arrayWithEvents {

    FFEvent *event1 = [FFEvent new];
    [event1 setStringCustomerName: @"Customer A"];
    [event1 setNumCustomerID:@1];
    [event1 setDateDay:[NSDate dateWithYear:[NSDate componentsOfCurrentDate].year month:[NSDate componentsOfCurrentDate].month day:[NSDate componentsOfCurrentDate].day]];
    [event1 setDateTimeBegin:[NSDate dateWithHour:10 min:00]];
    [event1 setDateTimeEnd:[NSDate dateWithHour:15 min:13]];


    FFEvent *event2 = [FFEvent new];
    [event2 setStringCustomerName: @"Customer B"];
    [event2 setNumCustomerID:@2];
    [event2 setDateDay:[NSDate dateWithYear:[NSDate componentsOfCurrentDate].year month:[NSDate componentsOfCurrentDate].month day:[NSDate componentsOfCurrentDate].day]];
    [event2 setDateTimeBegin:[NSDate dateWithHour:9 min:15]];
    [event2 setDateTimeEnd:[NSDate dateWithHour:12 min:138]];

   return [NSMutableArray arrayWithArray:@[event1, event2]]; 

}

这是我想要替换为硬编码数组的 json 输出:

[  
   {  
      "customer_id":"802",
      "customer_name":"Tela"

   },
   {  
      "customer_id":"803",
      "customer_name":"Bena"
   }
]

这是我的序列化 JSON 代码:

NSData *myData = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

NSMutableArray  *testFeeds = [NSJSONSerialization JSONObjectWithData: myData options:NSJSONReadingMutableContainers error:nil];

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

        [rec addObjectsFromArray:testFeeds];

请帮我解决这个问题。

【问题讨论】:

  • 你想从 json 中获取值然后替换你的硬编码数组内容吗?我无法理解
  • 是的,我已经获取了值,这就是我发布的输出,你是对的,需要在我的硬编码数组内容中替换

标签: ios objective-c arrays json nsmutablearray


【解决方案1】:

使用以下代码序列化您的json

NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];

现在jsonArray 包含您的json 文件的可变数据。因此,您可以直接更改或更新此数组中的值。

编辑

NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];

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

for (int i = 0; i< jsonArray.count; i++) {
    FFEvent *event1 = [FFEvent new];
    [event1 setStringCustomerName:jsonArray[i][@"customer_name"]];
    [event1 setNumCustomerID:[jsonArray[i][@"customer_id"] integerValue]];
    [event1 setDateDay:[NSDate dateWithYear:[NSDate componentsOfCurrentDate].year month:[NSDate componentsOfCurrentDate].month day:[NSDate componentsOfCurrentDate].day]];
    [event1 setDateTimeBegin:[NSDate dateWithHour:10 min:00]];
    [event1 setDateTimeEnd:[NSDate dateWithHour:15 min:13]];

    [rec addObject:event1];
}

【讨论】:

  • 我也序列化了,我需要知道如何应用它?
  • 感谢您的回复,我已经编辑了问题并插入了序列化编码,请看一下
  • @Tela 好的,现在有什么问题? 硬编码数组是什么意思??
  • 不知何故,我想将此 json 中的特定值 'customer_name' 传递到上面代码中的 'Customer A' 的位置
  • @Tela 我没听懂你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2020-03-17
  • 2011-11-14
相关资源
最近更新 更多