我有一个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);
答案 0 :(得分:0)
这应该有效:
double amount = 0.75;
string json = $"{{ \"amount\" : \"{amount}\", \"withdrawal\" : \"...\", \"pair\" : \"eth_xmr\" }}";
别忘了字符串前面的$
。然后,您可以访问花括号{}
编辑:您必须在开头使用{{
,最后使用}}
来转义括号
答案 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"
}));