如何从服务器解析 json 值,并将其显示在 tableview 单元格中

Posted

技术标签:

【中文标题】如何从服务器解析 json 值,并将其显示在 tableview 单元格中【英文标题】:How to parse json value from server, and display it in tableview cell 【发布时间】:2017-04-03 07:15:40 【问题描述】:
  "Names":[  
    
     "type":"Name",
     "id":  
        "type":"Point",
        "coordinates":[  
           80.26483,
           13.08891
        ]
     ,
     "properties":  
       "region":"Tamil Nadu",
        "region_gid":"whosonfirst:region:85672245",
        "county":"Chennai",
        "county_gid":"whosonfirst:county:890505403",
        "label":"Chennai, India"
     
  ,
    
     "type":"Name",
     "id":  
        "type":"Point",
        "coordinates":[  
           80.27847,
           13.08784
        ]
     ,




 for(NSDictionary * dict in autocompletedata)
             
                 Autodata *data = [[Autodata alloc]init];

                 NSMutableArray *coordinates =[dict valueForKey:@"geometry"];
                 NSMutableArray *propertiesarray = [dict valueForKey:@"properties"];


                 for(NSDictionary *properties_dict in propertiesarray)
                 
                     data.searchterm = [properties_dict objectForKey:@"label"];
                 
                 NSLog(@"searchterm%@",coordinates);
                  NSLog(@"coordinates%@",propertiesarray);


                 [autodataarray addObject:data];

             

从服务器解析json值并显示在tableview单元格中。

我需要在表格视图单元格中显示标签和坐标、区域。

但是,我有一个错误。我不知道如何解析它。我在想也许我可以将 id 和 properties 保存在不同的数组中,从中我可以获得坐标和标签的值。

【问题讨论】:

你能显示完整的 JSON 响应吗 更新了一些语法和格式。 【参考方案1】:
NSArray *YourArray =[Json objectForKey:@"Names"];

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

NSString *strlabel =[[[YourArray objectAtIndex:indexPath.row]objectForKey:@"properties"]objectForKey:@"label"];

NSString *strregion =[[[YourArray objectAtIndex:indexPath.row]objectForKey:@"properties"]objectForKey:@"region"];

NSArray *cordintateArray =[[[YourArray objectAtIndex:indexPath.row]ojectForKey:@"id"]objectForKey:@"coordinates"];

【讨论】:

永远欢迎您@diva【参考方案2】:

来自网络服务的成功

yourArray=[dictDashboardData objectForKey:@"Names"];

[yourTableView reloadData];

表格查看方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

return yourArray.count;



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


//...

NSDictionary *dictData = [yourArray objectAtIndex:indexPath.row];

cell.yourLabel.text=[dictData objectForKey:@"type"];
cell.yourLabel.text=[dictData objectForKey:@"id"];
    cell.yourLabel.text=[[dictData objectForKey:@"id"]objectForKey:@"type"];
cell.yourLabel.text=[[dictData objectForKey:@"id"]objectForKey:@"coordinates"];
cell.yourLabel.text=[dictData objectForKey:@"properties"];

return cell;

【讨论】:

【参考方案3】:
self.Array1 = JSON.object(forKey: "Names") as! NSArray
            for i in 0..<self.Array.count 
                let item = self.Array[i] as! [String: AnyObject]
               //declare Object
                let SampleDetails = SampleObjectModel()
                SampleDetails.Name = ApiClients.sharedInstance.nullremove(value:item["type"]as AnyObject) as! String
                                               self.Array2.append(SampleDetails)

            

//tableview 委托

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 


        // create a new cell if needed or reuse an old one
          let cell = Tableview.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) as!tableviewcell
       //import objectModel and get the data
        let sampleObject = SampleModel.Array2[indexPath.row]
        cell.Namelabel.text = sampleObject.Name

     

【讨论】:

以上是关于如何从服务器解析 json 值,并将其显示在 tableview 单元格中的主要内容,如果未能解决你的问题,请参考以下文章

如何拆分/解析 JSON 数据并将其保存到 SQL 服务器中?

如何从 Spotify Search API 获取数据并将其解析为 JSON? [在 node.js 中

如何从 json 中获取 int 并将其解析为 dart 中的 bool?

解析 JSON 并将其显示在 UITableView 上的问题

如何提取内部响应值并将其传递给 UserModel

如何解析json数据并将其加载到django模板