使用restsharp

时间:2016-05-17 10:35:56

标签: c# winforms rest restsharp

我在json2csharp的帮助下宣布了以下类来管理我的回复

public class Address
{
  public string addressLine1 { get; set; }
  public string addressLine2 { get; set; }
  public string addressLine3 { get; set; }
  public string locality { get; set; }
  public string province { get; set; }
  public string postalCode { get; set; }
  public string country { get; set; }
}

public class Component
{
  public string streetNumber1 { get; set; }
  public string street1 { get; set; }
  public string locality1 { get; set; }
  public string postalCode1 { get; set; }
  public string country1 { get; set; }
  public string countryISO1 { get; set; }
}

public class RootObjectFormat
{
public List<Address> address { get; set; }
public List<Component> components { get; set; }
}

这是我的电话

var client = new RestClient(cmboxOutput.Text); //this has a full url in it for a get response
var formatRequest = new RestRequest();
formatRequest.AddHeader("token", "XYZ");
IRestResponse<RootObjectFormat> formatResponse = client.Execute<RootObjectFormat>(formatRequest);

现在我收到了回复,这很棒。但它是嵌套的。不幸的是,每个循环的以下内容都会以不正确的格式获取数据。

 foreach (var result in formatResponse.Data.address)
 {
  rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + result.addressLine1 + '\n';
  rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + result.addressLine2 + '\n';
  rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + result.addressLine3 + '\n';
  rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + result.locality + '\n';
  rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + result.postalCode + '\n';
  rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + result.country + '\n';  
 }  

由于它嵌套到抓取addressLine2,我必须等待第二次执行循环,最后我的输出看起来非常不专业。有一个更好的方法吗? http://i.imgur.com/saAhf9L.png&lt;首先在循环上运行 http://i.stack.imgur.com/24cco.png&lt;第五次运行

找到了一种从响应中输出格式的更好方法,但它仍然不是那么完美。有什么方法可以改善吗?

 foreach (var result in formatResponse.Data.address)
 {
   rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text +"\n"+   string.Join("",result.addressLine1 + result.addressLine2
                + result.addressLine3 + result.postalCode + result.province + result.country);

        } 

1 个答案:

答案 0 :(得分:0)

foreach (var result in formatResponse.Data.address)
        {
            var str = "";
            str = string.Join("",result.addressLine1 + result.addressLine2
                + result.addressLine3 + result.postalCode + result.province + result.country);
            if (str != "")
            {
                rchtxtbxOutputLayout.Text = rchtxtbxOutputLayout.Text + str.ToString() + "\n";
            }