簡體   English   中英

如何序列化嵌套JSON?

[英]How to serialize Nested JSON?

我有以下嵌套的JSON:

{"Command":"helo", 
 "parameter" :  {"Configured":false, "ApplicationString":"Something",  "Hostname":"some",
 "IPAddress":"0.0.0.0",
 "UniqueID":"",
 "Username":"me"}}

而且我需要將此字符串作為JSON對象傳遞給C#中的POST調用。 誰能幫助我執行此步驟?

注意:我能夠傳遞如下所示的簡單JSON:

var request = (HttpWebRequest)WebRequest.Create("http://localhost:8084");
request.ContentType = "text/json";
request.Method = "POST";

using (var streamWriter = new    StreamWriter(request.GetRequestStream()))
{
    string json = new JavaScriptSerializer().Serialize(new
    {
        Command = "test",
        name="pooja"
    });

    streamWriter.Write(json);
}

如果我以相同的方式傳遞嵌套的json,如下所示:

 string json = new JavaScriptSerializer().Serialize(new
                {
                    Command = "test",
                    parameter = new JavaScriptSerializer().Serialize(new
                    {
                        Command = "test",
                    }),

                });

我得到以下輸出:{“ Command”:“ test”,“ parameter”:“ {\\” Command \\“:\\” test \\“}”}

它可能會幫助您。

private string MakeRequest(string uri, string jsnPostData, string method)
{
    try
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        if (request != null)
        {
            request.Method = method;
            request.Timeout = 2000000;
            request.ContentType = "application/json";
            request.KeepAlive = true;

            byte[] data = Encoding.UTF8.GetBytes(jsnPostData);

            Stream dataStream = request.GetRequestStream();
            dataStream.Write(data, 0, data.Length);
            dataStream.Close();

            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            string result = new StreamReader(response.GetResponseStream()).ReadToEnd();

            return result;
        }
        else
            return "";
    }
    catch (Exception ex)
    {
        Response.Write("<b>Error :</b>" + ex.Message + "</br>");
        return "";
    }
}

如果您有任何問題,請告訴我。

void Main()
{
    CommandParamater exampleCommand = new CommandParamater
    {
        Command = "Foo",
        Parameter = new Parameter 
        {
            ApplicationString = "App String Foo",
            Configured = true,
            Hostname = "Bar",
            IPAddress = "8.8.8.8",
            UniqueID = Guid.NewGuid().ToString(),
            Username = "FooBar"
        }
    };

    string uri = "http://localhost:8084";
    string data = JsonConvert.SerializeObject(exampleCommand);

    Html htmlClient = new Html();
    htmlClient.Post(uri, data, "application/json");
}

public class Html 
{
    public string Post(string uri, string data, string contentType)
    {
        byte[] dataBytes = Encoding.UTF8.GetBytes(data);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
        request.ContentType = contentType;
        request.ContentLength = dataBytes.Length;

        using (Stream stream = request.GetRequestStream())
        {
            stream.Write(dataBytes, 0, dataBytes.Length);
        }

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        using (Stream stream = response.GetResponseStream())
        using (StreamReader reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }
}


public class Parameter
{
    [JsonProperty("Configured")]
    public bool Configured { get; set; }

    [JsonProperty("ApplicationString")]
    public string ApplicationString { get; set; }

    [JsonProperty("Hostname")]
    public string Hostname { get; set; }

    [JsonProperty("IPAddress")]
    public string IPAddress { get; set; }

    [JsonProperty("UniqueID")]
    public string UniqueID { get; set; }

    [JsonProperty("Username")]
    public string Username { get; set; }
}

public class CommandParamater
{
    [JsonProperty("Command")]
    public string Command { get; set; }

    [JsonProperty("parameter")]
    public Parameter Parameter { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM