2017-10-24 4 views
0

私は、新しいクラスを作成せずにそれを解析するシンプルなJSONnewtonsoftや他のjsonパーサーを使用してこのコードを単純化するにはどうすればよいですか?

{"200567175963759": { "pair": "esp_btc", "type": "sell", "amount": 2000000, "rate": 1E-08, "timestamp_created": "1498114417", "status": 0}} 

を得ました。私はそれを簡単にしたい。

私はそれを解析するために自己を作成したjsonhelperクラスを使用しています。それは基本的に2つの二重引用符の間の最初のものを見つけることを試み、200567175963759は注文IDです。パラメータを取得するだけで、 "ペア"の間に何かを見つけることができます: "と"

単純なjsonの場合、うまくいきます。 newtonsoftのようなより良いパーサーを使用して、注文ID、si 200567175963759、またはタイムスタンプを取得するにはどうすればよいですか?

私はnewtonsoft jsonを使ってそのことができるのだろうか?

   Dim jsonstring = jsonHelper.stripWhiteSpace(order3.ToString) '{"200567175963759": { "pair": "esp_btc", "type": "sell", "amount": 2000000, "rate": 1E-08, "timestamp_created": "1498114417", "status": 0}} 
       Dim orderid = fGetToken(order3.ToString, 1, """", """") 
       Dim base = b 
       Dim quote = key 
       Dim typeOfOrder = jsonHelper.getParameter(jsonstring, "type") 
       Dim amount = jsonHelper.getParameter(jsonstring, "amount") 
       Dim rate = jsonHelper.getParameter(jsonstring, "rate") 
       Dim timestamp_created = jsonHelper.getParameter(jsonstring, "timestamp_created") 
       Dim order4 = OrdersAtExchange.createOrders(amount, base, quote, _exchange, timestamp_created, rate, orderid) 
       _orders.Add(order4) 

私はnewtonsoftを使用して、私は私が何かを見つけることができませんNewtonsoft.Json.Linq.JObject内のすべての方法を見て、型が

  Dim order = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonorders) 
      Dim order1 = CType(order, Newtonsoft.Json.Linq.JObject) 
      Dim order2 = order1.Item("return").ToList 

でこのオブジェクトを得たことを解析しようとした場合つまり、jsonの辞書構造をgeneric.dictionaryと言うように変換する

そういうものがあります。私は試しましたが、単に働かなかっただけです。

newtonsoftで単純なjsonを解析するコードの実際のサンプルがあるのでしょうか?

答えて

1

オブジェクトプロパティは、インデックスのように見えるか、おそらくそれをキー入力する場合はここで辞書

Dim JsonString As String = "{""200567175963759"": { ""pair"": ""esp_btc"", ""type"": ""sell"", ""amount"": 2000000, ""rate"": 1E-08, ""timestamp_created"": ""1498114417"", ""status"": 0}}" 
    Dim JsonSettings = New Newtonsoft.Json.JsonSerializerSettings 
    JsonSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore 
    Dim OutObject = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Dictionary(Of String, SampleType))(JsonString) 

Class SampleType 
    Property pair As String 
    Property type As String 
    Property amount As String 
    Property rate As String 
Property timestamp_created As String 
Property status As String 
End Class 
+0

私はクラスを使用する必要はありません。私はJtoken JobjectとJarrayでそれを行うことができると思います –

0

はあなたがJson.NetのLINQ-to-JSON API(JTokens、JObjectsを使用してJSONを解析できる方法を示すサンプルである、場合、タイプ辞書でありますなど)

Dim json As String = 
    "{" & 
    " ""200567175963759"": {" & 
    " ""pair"": ""esp_btc""," & 
    " ""type"": ""sell""," & 
    " ""amount"": 2000000," & 
    " ""rate"": 1E-08," & 
    " ""timestamp_created"": ""1498114417""," & 
    " ""status"": 0" & 
    " }" & 
    "}" 

Dim rootObject As JObject = JObject.Parse(json) 

For Each prop As JProperty In rootObject.Properties() 

    Dim orderid As String = prop.Name 
    Dim orderInfo As JObject = prop.Value 
    Dim pair As String = orderInfo("pair").ToString() 
    Dim typeOfOrder As String = orderInfo("type").ToString() 
    Dim amount As Decimal = orderInfo("amount").ToObject(Of Decimal) 
    Dim rate As Decimal = orderInfo("rate").ToObject(Of Decimal) 
    Dim timestamp_created As String = orderInfo("timestamp_created").ToString() 
    Dim status As Integer = orderInfo("status").ToObject(Of Integer) 

    'etc. ... 

Next 

デモ:https://dotnetfiddle.net/X9SPIE

関連する問題