程序库: JSON Serialization and Deserialization (native MQL) - 页 9

 
o_o:

1.12

在 ArrayResize 中设置步骤 100

我需要更新 Codebase 中的源代码吗?

 
Delta.800:

亲爱的专家们请帮助我理解这个库。(我还不擅长面向对象编程,所以我无法理解库本身的代码和专门介绍 BTC-E 交易所的文章。这就是为什么我要求提供一个简单的示例,就像 中的示例一样)。

我需要解析 WEX.NZ 交易所的两个公共 api。

https://wex.nz/api/3/info

从这里,我需要在数组中获取所有可用的交易对(btc_usd、btc_rur......)(只有交易对名称,没有参数,我可以通过已知名称获取参数......)。


https://wex.nz/api/3/depth/btc_usd


并从这里获取两个数组(asks 和 bids)中订单的价格和价值。

如果能得到您的帮助,我将不胜感激!..!在此先表示感谢!


请在您离开的地方显示您的代码,到底是什么地方出了问题?
 
Rashid Umarov:

我需要更新 Codebase 中的源代码吗?

已经存在很长时间了
 

干得好,赞一个!

不过...如果反序列化的数据有问题(开头引号或括号的数量与结尾引号或括号的数量不相等),程序就会崩溃,提示数组 超限。这是非常糟糕的,在处理数组时必须考虑到这种情况,至少在没有检查输入数据是否正确的情况下。

 
Andrey Dik:

干得好,赞一个!

不过...如果反序列化的数据有问题(开头引号或括号的数量与结尾引号或括号的数量不相等),程序就会崩溃,提示数组 超限。这非常糟糕,在处理数组时必须考虑到这种情况,至少在没有检查输入数据正确性的情况下。

请演示具体数据
 
o_o:


请展示您的代码,您到底在什么地方失败了

一般来说,我甚至不知道如何从第一个链接中获取所有配对的名称:-(

---

我是通过以下方法从第一个链接中获取配对参数的:

CJAVal dataM;
dataM.Deserialize(ttt);  
... 
Print(dataM["pairs"]["btc_usd"]["fee"].ToDbl());

其中,ttt 是通过网络请求 获得的字符串。

从第二个链接,我已经解决了问题,我可以按如下方式访问:

Print(dataM["btc_usd"]["asks"].m_e[1][0].ToDbl());
其中
m_e[X][Y]

X- 订单号(从零开始)

Y- 0- 为价格,1- 为价值。

 
Delta.800:

总之,我甚至不知道如何从第一个链接中获取所有配对的名称:-(

---

我是这样从第一个链接获取配对参数的:

其中,ttt 是通过网络请求获得的字符串。

从第二个链接,我已经解决了问题,我可以通过以下方式访问:

其中

X- 订单号(从零开始)

Y- 0- 是价格,1- 是价值。

并确定。

如果它能解决你现在的问题,就使用这个解决方案。

如果还不够,你还可以想出更好的办法。

 
o_o:

好的

如果它能解决你现在的问题,那就用它吧。

如果还不够,你会想出更好的办法的

不不不,你有点误解了...

我已经解决了所有问题,除了一个! 我需要得到所有配对的名字! 我知道如何得到已知的,但如何得到未知的?

 
是的,我可能不明白你的问题出在哪里,从你展示的线路来看,你能得到一切。
 
o_o:
演示具体数据

  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);


2018.02.21 14:03:39.861 jason_test(EURUSD,W1) {"asdasdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.862 jason_test (EURUSD,W1) array out of range in 'json.mqh' (597,19)