使用可变内容更改JSON请求的一部分

时间:2017-10-06 13:05:13

标签: c# json

我有一个JSON代码向API请求一些信息,请参阅以下代码

string json = "{ \"amount\" : \"0.5\", \"withdrawal\" : \"...\", \"pair\" : \"eth_xmr\" }";

我实际上想要取代" 0.5"我从一些数学计算课得到的变量内容的信息。

我尝试了一些东西,但我不能让它起作用(每次都是红线)。

如何更换" 0.5"部分到一个字符串变量?

编辑:

以下是完整的通话代码:

var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
            httpWebRequest.ContentType = "application/json; charset=utf-8";
            httpWebRequest.Method = "POST";

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = "{ \"amount\" : \"0.5\", \"withdrawal\" : \"...\", \"pair\" : \"eth_xmr\" }";

                streamWriter.Write(json);
                streamWriter.Flush();
            }
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var responseText = streamReader.ReadToEnd();
                var apiResponse = JsonConvert.DeserializeObject<ApiResponse>(responseText);

4 个答案:

答案 0 :(得分:0)

这应该有效:

double amount = 0.75;
string json = $"{{ \"amount\" : \"{amount}\", \"withdrawal\" : \"...\", \"pair\" : \"eth_xmr\" }}";

别忘了字符串前面的$。然后,您可以访问花括号{}

中的任何变量/ field / ....

编辑:您必须在开头使用{{,最后使用}}来转义括号

答案 1 :(得分:0)

由于您已经在使用JSON.NET,因此不应手动创建请求。而是像这样组成你的JSON对象:

JObject json = new JObject();
json.Add("amount", YourCalculation());
// add your other properties the same way ...

如果您确实需要此对象作为string,则最后可以在其上调用ToString

答案 2 :(得分:0)

虽然您当然可以操作字符串来创建json,但最好的方法是使用所有这些字段的模型(类),将值设置为模型,然后在调用api之前将其序列化为json。

答案 3 :(得分:0)

使用Json.NET并转换你的json字符串并操纵数量:

string json = "{ \"amount\" : \"0.5\", \"withdrawal\" : \"...\", \"pair\" : \"eth_xmr\" }";

dynamic lsDynObject = JsonConvert.DeserializeObject(json);
lsDynObject.amount = 605.123;
string lsOut = JsonConvert.SerializeObject(lsDynObject);

Console.WriteLine(lsOut);

安装时:

  

Install-Package Newtonsoft.Json

但是你必须考虑这个数量现在是一个数字。 如果您继续使用金额作为字符串,则必须设置:

lsDynObject.amount = "605.123";

更新

使用这样的类:

public class MyJson
{
    [JsonProperty("pair")]
    public string Pair { get; set; }

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

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

用你的json编写:

streamWriter.Write(JsonConvert.SerializeObject(new MyJson()
{
    Pair = "eth_xmr",
    Withdrawal = "...",
    Amount = "34.676"
}));