如何使用newtonsoft或其他json解析器简化此代码?

时间:2017-10-24 07:40:57

标签: json vb.net linq parsing

我有一个简单的json

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

我想在不创建任何新类的情况下解析它。我想让事情变得简单。

我正在使用jsonhelper类,我创建了自己来解析它。它基本上试图找到两个双引号之间的第一件事,得到200567175963759这是订单ID。获取参数只是在" pair"之间找到一些东西:"和"

对于简单的json,它工作正常。我怎样才能获得订单ID,使用更好的解析器,例如newtonsoft来获取订单ID,或者使用时间戳。

我想知道我是否可以使用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解析它,我得到了这个类型为

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

我看看Newtonsoft.Json.Linq.JObject中的所有方法我找不到任何说json中的字典结构转换为generic.dictionary

有类似的东西。我尝试过,但根本没有工作。

所以我想知道是否有一些代码用newtonsoft解析那个简单的json?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

以下示例展示了如何使用Json.Net的LINQ-to-JSON API(JTokens,JObjects等)解析JSON

akka.persistence.journal.plugin="akka.persistence.journal.leveldb"
akka.persistence.snapshot-store.plugin="akka.persistence.snapshot-store.local"
akka.persistence.journal.leveldb.dir="target/sample/leveldb"
akka.persistence.snapshot-store.local.dir="target/sample/snapshots"
akka.persistence.journal.leveldb.native=off

演示:https://dotnetfiddle.net/X9SPIE