如何在JSON对象中传递变量

时间:2015-02-05 16:43:44

标签: c# json

我正在使用C#发送JSON帖子。如果我直接在请求中硬编码值,一切正常。但我想以变量的形式发送它,但是失败了。我尝试了不同的方法,但我找不到任何解决方案。 我试图从#num;#39;中获取价值。 ID字段中的变量是172024,但在响应中我得到的字符串不是值。

这是我的代码

static void Main(string[] args)
{
    //Make a Json request

    var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://IPaddress/apibxe_json.php");

    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string num;
        num = Convert.ToString("172024");
        Console.WriteLine(num);

        string json = "[ { \"connection\" : { \"PS\": \"99778\", \"pr\" : \"******\" }},  {\"execute\" : { \"name\" : \"NewAPI\", \"params\" : { \"Action\" : \"NEW\", \"ID\":  \"$num\" ,   \"Dlr\" : \"&&&&&\"}}}]";

        streamWriter.Write(json);
    }

    //Get the response
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var responseText = streamReader.ReadToEnd();

        JArray jresponse = JArray.Parse(responseText);

        Console.WriteLine(jresponse);  
    }
}

2 个答案:

答案 0 :(得分:1)

作为字符串连接的替代方法,您可能需要考虑创建一个类来表示您正在写入请求正文的JSON,并将其序列化,以便它更容易使用。< / p>

我注意到您已经在使用JSON.NET--这里是如何使用该库(使用json2csharp生成的类。)他们可以使用一些清理,但这只是一个例子):

public class Connection
{
    public string PS { get; set; }
    public string pr { get; set; }
}

public class Params
{
    public string Action { get; set; }
    public int ID { get; set; }
    public string Dlr { get; set; }
}

public class Execute
{
    public Execute()
    {
        this.Parameters = new Params();
    }

    public string name { get; set; }

    [JsonProperty("params")]
    public Params Parameters { get; set; }
}

public class Request
{
    public Request()
    {
        this.connection = new Connection();
        this.execute = new Execute();
    }

    public Connection connection { get; set; }
    public Execute execute { get; set; }
}

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    var request = new Request();

    /* Set other properties as well */
    request.execute.Parameters.ID = 172024;

    string json = JsonConvert.SerializeObject(request);

    streamWriter.Write(json);
}

答案 1 :(得分:0)

代码片段可能对您有帮助(在MVC上)....

 public JsonResult LoadName(string temp)
 {
      var fromBd=temp+" Bangladesh";
      return Json(fromBd,JsonRequestBehavior.AllowGet);
 }

Jquery函数是......

function(){
var temp='From';
$.get("/BasicSettings/Ajax/LoadName", { temp: temp}, function (data) {
            $('span').html(data.fromBd); 
        });
}