【发布时间】:2016-07-13 14:23:18
【问题描述】:
我正在尝试以正确的方式匹配 Blockchain JSON Api 响应,但似乎我做不到。区块链 API 响应如下所示:
{
"addresses": [
{
"balance": 1400938800,
"address": "1Q1AtvCyKhtveGm3187mgNRh5YcukUWjQC",
"label": "SMS Deposits",
"total_received": 5954572400
},
{
"balance": 79434360,
"address": "1A8JiWcwvpY7tAopUkSnGuEYHmzGYfZPiq",
"label": "My Wallet",
"total_received": 453300048335
},
{
"balance": 0,
"address": "17p49XUC2fw4Fn53WjZqYAm4APKqhNPEkY",
"total_received": 0
}
]
}
基本上,如您所见。对于每个地址,C# ReadToEnd() 上的每一行都让我搞砸了。但基本上我正在尝试,如果有标签 SMS Deposits 示例,那么从“那条线”它将采用该地址,没有其他地方。示例:标签是彼得,那么它只从彼得行获取地址,而不是任何其他行。我怎么能那样做?这也是我的代码:
listAddresses.Method = "GET";
HttpWebResponse listAddressesResp = (HttpWebResponse)listAddresses.GetResponse();
StreamReader listAddressesSR = new StreamReader(listAddressesResp.GetResponseStream());
var resultListAddresses = listAddressesSR.ReadToEnd();
if (resultListAddresses.Contains(name))
{
Regex SuiWillThatWork = new Regex("\"address\":\"[A-Za-z0-9]+");
var TestingVol2 = SuiWillThatWork.Match(resultListAddresses).Value;
TestingVol2 = TestingVol2.Replace("\"address\":\"", "");
address = TestingVol2;
MessageBox.Show(resultListAddresses);
MessageBox.Show(address);
}
【问题讨论】:
-
XY 问题?与其破解它来工作,不如去获取
Newtonsoft.Json并按应处理的方式处理 JSON。 -
是的,好的。如果我以正确的方式“对待”它,那么仍然......我如何从那个“行/块”中正则表达式该信息
-
如果您将其视为 JSON,则绝对没有理由继续使用 RegEx。即使你确实让它与正则表达式一起工作,1)它会很脆弱,可能不会在任何情况下都工作,2)如果供应商更改 API/响应,脆弱尤其如此,3)已经有一个解析器——使用它。