2017-05-01 99 views
0

我连接到一个Web API并要求响应,但我的响应显示不正确,如“高”:4.166e-5当我期望像0.00004166像数字I我要求的是BTC的市场价格,我认为这是一个32位整数的问题,但它的一个字符串,所以我失去了。对不起,如果我没有解释得很好。HttpResponse作为字符串 - 将数字转换为字母

这是我读的响应:

`{"date":1493626200,"high":4.166e-5,"low":4.158e-5,"open":4.166e-5,"close":4.158e-5,"volume":0.05681982,"quoteVolume":1364.65936831,"weightedAverage":4.163e-5}] 

这是怎么IM格式化的HttpResponse

` Dim response As HttpResponseMessage = client.PostAsync(privUrl, myContent).Result 

     If response.IsSuccessStatusCode Then 
      Dim json As String = response.Content.ReadAsStringAsync().Result 
      Return json 
     End If 

,然后用这个

 Dim json As String = JsonConvert.DeserializeObject(responseFromServer).ToString() 

编辑解串***

现在我使用EuX0示例,但仍然出现错误 无法反序列化当前的JSON数组(例如, [1,2,3])转换成类型 'class_test.FormatOutputData',因为类型需要JSON对象

Dim responseFromServer As String = apiSettings.TradingApi("returnTradeHistory&currencyPair=BTC_XRP") 
TextBox1.AppendText(responseFromServer) 'so i can see whats coming in 
Dim jsonString As String = responseFromServer 
**Dim obj As FormatOutputData = JsonConvert.DeserializeObject(Of FormatOutputData)(jsonString)** 
obj.outputValues() 

这是输出的整个JSON输出[{"globalTradeID":116229026,"tradeID":"4728521","date":"2017-05-01 11:21:43","rate":"0.00004113","amount":"6118.34548991","total":"0.25164754","fee":"0.00150000","orderNumber":"40272934869","type":"buy","category":"exchange"},{"globalTradeID":116227160,"tradeID":"4728350","date":"2017-05-01 11:17:51","rate":"0.00004115","amount":"4.08198005","total":"0.00016797","fee":"0.00250000","orderNumber":"40271626179","type":"buy","category":"settlement"},{"globalTradeID":116227159,"tradeID":"4728349","date":"2017-05-01 11:17:51","rate":"0.00004115","amount":"998.42429344","total":"0.04108515","fee":"0.00250000","orderNumber":"40271625180","type":"buy","category":"marginTrade"},{"globalTradeID":116226661,"tradeID":"4728312","date":"2017-05-01 11:16:50","rate":"0.00004125","amount":"1000.00000000","total":"0.04125000","fee":"0.00150000","orderNumber":"40271087718","type":"sell","category":"marginTrade"},{"globalTradeID":116207504,"tradeID":"4726343","date":"2017-05-01 10:44:17","rate":"0.00004169","amount":"6046.78987712","total":"0.25209066","fee":"0.00150000","orderNumber":"40258966851","type":"sell","category":"exchange"},{"globalTradeID":116165595,"tradeID":"4721962","date":"2017-05-01 09:19:29","rate":"0.00004083","amount":"5908.02441914","total":"0.24122463","fee":"0.00150000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":116165589,"tradeID":"4721961","date":"2017-05-01 09:19:29","rate":"0.00004083","amount":"3.77406151","total":"0.00015409","fee":"0.00150000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":116165569,"tradeID":"4721960","date":"2017-05-01 09:19:28","rate":"0.00004083","amount":"144.21964328","total":"0.00588848","fee":"0.00250000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":115826811,"tradeID":"4679609","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"153.45158215","total":"0.00584650","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826810,"tradeID":"4679608","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"262.48126299","total":"0.01000053","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826809,"tradeID":"4679607","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"5253.48043078","total":"0.20015760","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826808,"tradeID":"4679606","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"836.80554752","total":"0.03188229","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"}]jsonString: [{"globalTradeID":116229026,"tradeID":"4728521","date":"2017-05-01 11:21:43","rate":"0.00004113","amount":"6118.34548991","total":"0.25164754","fee":"0.00150000","orderNumber":"40272934869","type":"buy","category":"exchange"},{"globalTradeID":116227160,"tradeID":"4728350","date":"2017-05-01 11:17:51","rate":"0.00004115","amount":"4.08198005","total":"0.00016797","fee":"0.00250000","orderNumber":"40271626179","type":"buy","category":"settlement"},{"globalTradeID":116227159,"tradeID":"4728349","date":"2017-05-01 11:17:51","rate":"0.00004115","amount":"998.42429344","total":"0.04108515","fee":"0.00250000","orderNumber":"40271625180","type":"buy","category":"marginTrade"},{"globalTradeID":116226661,"tradeID":"4728312","date":"2017-05-01 11:16:50","rate":"0.00004125","amount":"1000.00000000","total":"0.04125000","fee":"0.00150000","orderNumber":"40271087718","type":"sell","category":"marginTrade"},{"globalTradeID":116207504,"tradeID":"4726343","date":"2017-05-01 10:44:17","rate":"0.00004169","amount":"6046.78987712","total":"0.25209066","fee":"0.00150000","orderNumber":"40258966851","type":"sell","category":"exchange"},{"globalTradeID":116165595,"tradeID":"4721962","date":"2017-05-01 09:19:29","rate":"0.00004083","amount":"5908.02441914","total":"0.24122463","fee":"0.00150000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":116165589,"tradeID":"4721961","date":"2017-05-01 09:19:29","rate":"0.00004083","amount":"3.77406151","total":"0.00015409","fee":"0.00150000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":116165569,"tradeID":"4721960","date":"2017-05-01 09:19:28","rate":"0.00004083","amount":"144.21964328","total":"0.00588848","fee":"0.00250000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":115826811,"tradeID":"4679609","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"153.45158215","total":"0.00584650","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826810,"tradeID":"4679608","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"262.48126299","total":"0.01000053","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826809,"tradeID":"4679607","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"5253.48043078","total":"0.20015760","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826808,"tradeID":"4679606","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"836.80554752","total":"0.03188229","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"}]

+0

第一个问题是您的JSON字符串不完整。它应该以“]”结尾而不是逗号。所以,如果你能提供完整的字符串,那就太棒了。此外,您的例子JSON字符串包含FormatOutPutData对象不止一个,所以你需要做的是这样的: 昏暗的OBJ()作为FormatOutPutData = JsonConvert.DeserializeObject(中FormatOutputData())(jsonString) ,然后显示它像:OBJ(X).outputValues() – EuX0

+0

我已经更新了JSON,输出我现在有你的例子是全球TradeID:116226661 TradeID:4728312 高:0 低:0 开放:0 关闭:0 容量:0 QuoteVolume:0 加权平均:0,但这些都缺少信息 –

+0

你的json字符串仍然搞砸我相信在它的中间不应该是“jsonString:”。此外,信息不存在,因为您的json字符串只包含globalTradeID,tradeID,日期,费率,金额,总额,费用,订单编号,类型和类别。 查看我的原始答案更新代码。 – EuX0

回答

0
Imports Newtonsoft.Json 

Module Module1 

    Sub Main() 
     Dim jsonString As String = My.Computer.FileSystem.ReadAllText("C:\1.txt") 
     Console.WriteLine(String.Format("jsonString: {0}{1}", jsonString, vbNewLine)) 
     Dim objarray As New List(Of FormatOutputData) 
     objarray.AddRange(JsonConvert.DeserializeObject(Of FormatOutputData())(jsonString)) 
     For Each item As FormatOutputData In objarray 
      item.outputValues() 
     Next 
     Console.ReadLine() 
    End Sub 


Private Class FormatOutputData 
    Public globalTradeID As Long 
    Public tradeID As Long 
    Public [date] As String 
    Public rate As Decimal 
    Public amount As Decimal 
    Public total As Decimal 
    Public fee As Decimal 
    Public orderNumber As String 
    Public type As String 
    Public category As String 

    Public Sub outputValues() 
     Console.WriteLine(String.Format("globalTradeID: {1}{0}tradeID: {2}{0}date: {3}{0}rate: {4}{0}amount: {5}{0}total: {6}{0}fee: {7}{0}orderNumber: {8}{0}type: {9}{0}category: {10}{0}", 
             vbNewLine, globalTradeID, tradeID, [date], rate, amount, total, fee, orderNumber, type, category)) 
    End Sub 
End Class 
End Module 

实施例:

jsonString: [{"globalTradeID":116229026,"tradeID":"4728521","date":"2017-05-01 11:21:43","rate":"0.00004113","amount":"6118.34548991","total":"0.25164754","fee":"0.00150000","orderNumber":"40272934869","type":"buy","category":"exchange"},{"globalTradeID":116227160,"tradeID":"4728350","date":"2017-05-01 11:17:51","rate":"0.00004115","amount":"4.08198005","total":"0.00016797","fee":"0.00250000","orderNumber":"40271626179","type":"buy","category":"settlement"},{"globalTradeID":116227159,"tradeID":"4728349","date":"2017-05-01 11:17:51","rate":"0.00004115","amount":"998.42429344","total":"0.04108515","fee":"0.00250000","orderNumber":"40271625180","type":"buy","category":"marginTrade"},{"globalTradeID":116226661,"tradeID":"4728312","date":"2017-05-01 11:16:50","rate":"0.00004125","amount":"1000.00000000","total":"0.04125000","fee":"0.00150000","orderNumber":"40271087718","type":"sell","category":"marginTrade"},{"globalTradeID":116207504,"tradeID":"4726343","date":"2017-05-01 10:44:17","rate":"0.00004169","amount":"6046.78987712","total":"0.25209066","fee":"0.00150000","orderNumber":"40258966851","type":"sell","category":"exchange"},{"globalTradeID":116165595,"tradeID":"4721962","date":"2017-05-01 09:19:29","rate":"0.00004083","amount":"5908.02441914","total":"0.24122463","fee":"0.00150000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":116165589,"tradeID":"4721961","date":"2017-05-01 09:19:29","rate":"0.00004083","amount":"3.77406151","total":"0.00015409","fee":"0.00150000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":116165569,"tradeID":"4721960","date":"2017-05-01 09:19:28","rate":"0.00004083","amount":"144.21964328","total":"0.00588848","fee":"0.00250000","orderNumber":"40228860987","type":"buy","category":"exchange"},{"globalTradeID":115826811,"tradeID":"4679609","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"153.45158215","total":"0.00584650","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826810,"tradeID":"4679608","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"262.48126299","total":"0.01000053","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826809,"tradeID":"4679607","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"5253.48043078","total":"0.20015760","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"},{"globalTradeID":115826808,"tradeID":"4679606","date":"2017-04-30 23:10:36","rate":"0.00003810","amount":"836.80554752","total":"0.03188229","fee":"0.00250000","orderNumber":"40019069988","type":"sell","category":"exchange"}] 

globalTradeID: 116229026 
tradeID: 4728521 
date: 2017-05-01 11:21:43 
rate: 0,00004113 
amount: 6118,34548991 
total: 0,25164754 
fee: 0,00150000 
orderNumber: 40272934869 
type: buy 
category: exchange 

globalTradeID: 116227160 
tradeID: 4728350 
date: 2017-05-01 11:17:51 
rate: 0,00004115 
amount: 4,08198005 
total: 0,00016797 
fee: 0,00250000 
orderNumber: 40271626179 
type: buy 
category: settlement 

EDIT2:

Sub Main() 
    Dim nestedJsonClass As NestedJson = JsonConvert.DeserializeObject(Of NestedJson)(jsonString) 
    Console.WriteLine(String.Format("Order number: {0}", nestedJsonClass.orderNumber)) 
    Console.WriteLine(String.Format(" ->:amount: {0}", nestedJsonClass.resultingTrades.Item(0).amount)) 
    Console.WriteLine(String.Format(" ->:date: {0}", nestedJsonClass.resultingTrades.Item(0).Date)) 

End Sub 

Private Class NestedJson 
    Public orderNumber As ULong 
    Public resultingTrades As New List(Of Nested) 
End Class 

Private Class Nested 
    Public amount As Decimal 
    Public [Date] As String 
    Public rate As Decimal 
    Public total As Decimal 
    Public tradeID As Long 
    Public type As String 
End Class 

EDIT3:

Sub Main() 
    Dim jsonInput As String = My.Computer.FileSystem.ReadAllText("C:\1.txt") 
    Dim whatEver As topLevelObject = JsonConvert.DeserializeObject(Of topLevelObject)(jsonInput) 
    Console.WriteLine(whatEver.asks(0)(0)) 
    Console.WriteLine(whatEver.asks(0)(1)) 
    Console.ReadLine() 
End Sub 

Public Class topLevelObject 
    Public asks() As List(Of Object) 
    Public bids() As List(Of Object) 
    Public isFrozen As String 
    Public seq As Integer 
End Class 
+0

非常感谢您的时间EuX0,我知道我现在需要什么,只有一个问题,为什么数字原来会像4.166e-5一样回来?什么让数字转换为字母? –

+0

如果它是从服务器那里传来的,那恐怕我不知道。一种可能性是发送4.166e-5而不是0.00004166超过数百万的请求为您节省一些带宽,但这纯粹是猜测。 编辑:为了将数字转换为字母,它被称为电子符号。 – EuX0

+0

非常感谢,祝你有美好的一天。 –