如何在 JSON 对象中传递变量 [重复]

Posted

技术标签:

【中文标题】如何在 JSON 对象中传递变量 [重复]【英文标题】:How to pass variable in JSON object [duplicate] 【发布时间】:2015-04-05 15:07:09 【问题描述】:

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

这是我的代码

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

【问题讨论】:

什么。在地球上。连接字符串就像第一天的东西。我强烈建议您打开一本书,例如 CLR Via C#。 \"PS\": \"" + num + "\", \"pr\" 完成。 有趣的是,推荐将“CLR via C#”作为介绍性文本。 :-) 对 C# 使用 JSON 库 - 有几个示例。 【参考方案1】:

代码片段可能对你有帮助(在 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); 
        );

【讨论】:

我更改了代码并且正在工作。感谢您的帮助,非常感谢。我是 C# 新手,想一步一步地学习更多内容,如果有的话,请推荐一些初中级书籍。【参考方案2】:

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

我注意到您已经在使用 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);

【讨论】:

以上是关于如何在 JSON 对象中传递变量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在restful控制器的返回对象中设置成员变量[重复]

默认情况下如何在php中传递变量[重复]

如何在 Android 的改造请求中传递 JSON 对象并检索 JSON 对象?

如何在python的SQL查询中传递变量[重复]

在 Unity 中,如何将值从一个脚本传递到另一个脚本?

C# JSON 反序列化:如何从 JSON 对象数组中获取值 [重复]