2016-07-28 9 views
0

まあでJSONオブジェクトを送信し、私はHttpClient.SendAsync()HttpRequestMessageを送信するために使用することができ、リクエストメソッドがPOSTに設定されており、単純な文字列のためのStringContentへのContentことができることを知っている...しかし、私の場合は、より複雑なJSONを送信したいですこのような文字列はHttpClientを

{ 
    "requests": [ 
    { 
     "image": { 
     "content": "" 
     }, 
     "features": [ 
     { 
      "type": "UNSPECIFIED", 
      "maxResults": 50 
     } 
     ] 
    } 
    ] 
} 

JavaScriptSerializerを使用しようとしましたが、そのようなjsonをrepresentsするオブジェクトを作成する方法がわかりません。

await Browser.SendAsync(new HttpRequestMessage 
{ 
    RequestUri = new Uri("http://127.0.0.1/"), 
    Method = HttpMethod.Post, 
    Content = new StringContent(new JavaScriptSerializer().Serialize()) 
}); 
+0

これはすでにjsonです。これ以上シリアル化することはできません。 jsonを 'StringContent'として使用してください。 – Crowcoder

+0

@Crowcoderこのツリーを表すクラスを作成できますか?もしそうなら、私はこの文字列を直列化したくありません。このような要求に応じて作成したいのです –

+1

そのような構造を持つクラスを作成してください。それを埋める。文字列としてシリアル化します。その後、HttpClientを通じて送信します。 –

答えて

2

あなたの場合このオブジェクトのためのC#コードをしたい、RootObjectクラスにhttp://json2csharp.com/の礼儀を提供

public class Image 
{ 
    public string content { get; set; } 
} 

public class Feature 
{ 
    public string type { get; set; } 
    public int maxResults { get; set; } 
} 

public class Request 
{ 
    public Image image { get; set; } 
    public List<Feature> features { get; set; } 
} 

public class RootObject 
{ 
    public List<Request> requests { get; set; } 
} 

を使用

+1

素晴らしい...私はこのjson2csharpを知りませんでした、ありがとう! – Forlani

+0

私はいつも怠惰な道を取ろうとします;) –

0

@xなどのクラスを作成して...、それを移入し、それをシリアル化し、要求を送信

public class features 
{ 
    public string type {get;set;} 
    public int maxResults {get;set;} 
} 
public class requests 
{ 
    public List<features> {get;set;} 
    ... the same for images 
} 

をあなたのツリーを構築するために、コメントで指摘...