2017-05-01 96 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

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