如何序列化嵌套JSON?

时间:2015-07-21 09:22:39

标签: c# json

我有以下嵌套的JSON:

    cin(0)<= carryin;

    Multipliers : for i in 0 to 5 generate

        begin   -- Not required

        blocks : hfh
        PORT MAP (
            clk => clk,
            carryin => cin(i),
            c => Signal_A(i),
            concat => Signal_B(i) ,
            carryout => cout(i),
            p => p
        );
    end generate;           

我需要将此字符串作为JSON对象传递给在C#中对我的Web服务进行POST调用。谁能帮助我如何做这一步?

注意:我能够传递简单的JSON,如下所示:

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

如果我按照相同的方式传递嵌套的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);
}

我得到以下输出:  { “命令”: “测试”, “参数”: “{\” 命令\ “:\” 测试\ “}”}

2 个答案:

答案 0 :(得分:2)

它可能对你有帮助。

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 "";
    }
}

答案 1 :(得分:2)

如果您有任何问题,请告诉我。

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; }
}