2017-05-01 2 views
0

Je me connecte à une API Web et demande une réponse, mais ma réponse est affichée incorrectement comme "haut": 4.166e-5 quand je m'attends à quelque chose comme 0.00004166 comme les chiffres I Je demande est les prix du marché en BTC, je me dis que c'est un problème de 32 bits entiers, mais c'est une chaîne si im perdu. Désolé si je n'explique pas très bien.HttpResponse sous forme de chaîne - transformer des nombres en lettres

c'est la réponse que je lis:

`{"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}] 

c'est ainsi im mise en forme 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 

et désérialisation puis avec cette

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

EDIT ***

Maintenant, j'utilise l'exemple EuX0 et je reçois toujours une erreur Impossible de désérialiser le tableau JSON actuel (par ex. [1,2,3]) dans le type 'class_test.FormatOutputData' parce que le type nécessite un objet 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() 

ceci est un ensemble de la sortie 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

Le premier problème est que votre chaîne JSON est incomplète. Cela devrait se terminer par "]" et non par une virgule. Donc, si vous pouviez fournir la chaîne complète, ce serait génial. Aussi votre exemple chaîne JSON contient plus d'un de l'objet FormatOutPutData de sorte que vous devez faire quelque chose comme: Dim obj() comme FormatOutPutData = JsonConvert.DeserializeObject (de FormatOutputData()) (jsonString) Et puis afficher comme : obj (x) .outputValues ​​() – EuX0

+0

J'ai mis à jour le JSON, la sortie que j'ai maintenant avec votre exemple est mondial TradeID: 116226661 TradeID: 4728312 haute: 0 faible: 0 Ouvert: 0 Fermer: 0 Volume: 0 QuoteVolume: 0 WeightedAverage: 0, mais ceux-ci manquent l'info –

+0

Votre chaîne json est encore foiré je crois que Il ne devrait pas être "jsonString:" au milieu de celui-ci. Aussi l'information n'est pas là parce que votre chaîne json contient seulement globalTradeID, tradeID, date, taux, quantité, total, honorer, numéro d'ordre, type et catégorie. Consultez ma réponse originale pour le code mis à jour. – EuX0

Répondre

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 

Exemple de sortie:

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

Merci beaucoup pour votre temps EuX0, je sais ce dont j'ai besoin maintenant, juste une question, pourquoi les chiffres reviennent comme 4.166e-5 à l'origine? Qu'est-ce qui fait que les nombres sont convertis en lettres? –

+0

Si ça venait comme ça du serveur alors j'ai peur de ne pas savoir. Une possibilité est que l'envoi de 4.166e-5 au lieu de 0.00004166 sur des millions de requêtes vous permet d'économiser de la bande passante, mais c'est purement une spéculation. Edit: Pour ce qui convertit les nombres en lettres, on l'appelle la notation électronique. – EuX0

+0

merci beaucoup, passez une bonne journée. –