यह JSON फ़ाइल है जिसे मैं पार्स करना चाहता हूँ

"success" : true,
"message" : "",
"result" : [{
        "MarketName" : "BTC-888",
        "High" : 0.00000919,
        "Low" : 0.00000820,
        "Volume" : 74339.61396015,
        "Last" : 0.00000820,
        "BaseVolume" : 0.64966963,
        "TimeStamp" : "2014-07-09T07:19:30.15",
        "Bid" : 0.00000820,
        "Ask" : 0.00000831,
        "OpenBuyOrders" : 15,
        "OpenSellOrders" : 15,
        "PrevDay" : 0.00000821,
        "Created" : "2014-03-20T06:00:00",
        "DisplayMarketName" : null
    }, {
        "MarketName" : "BTC-A3C",
        "High" : 0.00000072,
        "Low" : 0.00000001,
        "Volume" : 166340678.42280999,
        "Last" : 0.00000005,
        "BaseVolume" : 17.59720424,
        "TimeStamp" : "2014-07-09T07:21:40.51",
        "Bid" : 0.00000004,
        "Ask" : 0.00000005,
        "OpenBuyOrders" : 18,
        "OpenSellOrders" : 18,
        "PrevDay" : 0.00000002,
        "Created" : "2014-05-30T07:57:49.637",
        "DisplayMarketName" : null
    }
]

किसी भी मार्केटनाम के "वॉल्यूम" और "लास्टप्राइस" को प्राप्त करने के लिए मैं इसे कैसे पार्स कर सकता हूं? 64 से अधिक बाजार हैं, तो इसे प्राप्त करने का सबसे अच्छा तरीका क्या है? इसके अलावा मैं पुराने वॉल्यूम और नए वॉल्यूम के बीच तुलना करना चाहता हूं ..

1
Abdulrahman Darwish 30 जून 2017, 01:34
क्या आपके पास एक सी # ऑब्जेक्ट है जो मार्केट जेसन का प्रतिनिधित्व करता है?
 – 
Nate Anderson
30 जून 2017, 01:37
3
 – 
Ian
30 जून 2017, 01:38

1 उत्तर

सबसे बढ़िया उत्तर

आप इस वर्ग का उपयोग कर सकते हैं:

public class Result
{
    public string MarketName { get; set; }
    public double High { get; set; }
    public double Low { get; set; }
    public double Volume { get; set; }
    public double Last { get; set; }
    public double BaseVolume { get; set; }
    public string TimeStamp { get; set; }
    public double Bid { get; set; }
    public double Ask { get; set; }
    public int OpenBuyOrders { get; set; }
    public int OpenSellOrders { get; set; }
    public double PrevDay { get; set; }
    public string Created { get; set; }
    public object DisplayMarketName { get; set; }
}

public class MyClass
{
    public bool success { get; set; }
    public string message { get; set; }
    public List<Result> result { get; set; }
}

और फिर आप परिणाम सूची से "वॉल्यूम" और "अंतिम" प्राप्त कर सकते हैं:

string YourJsonString = ".....";

var myClass = new JavaScriptSerializer().Deserialize<MyClass>(YourJsonString);

foreach(var result in myClass.Result){
   Console.WriteLine("Volume: " + result.Volume);
   Console.WriteLine("Last: " + result.Last);
}

मैंने इस कोड का परीक्षण नहीं किया है, लेकिन इसे काम करना चाहिए। अगर टिप्पणी नहीं करते हैं।


टिप्पणी के आधार पर अपडेट करें:

यदि आप एक बाज़ार की तुलना अगले बाज़ार से करना चाहते हैं, तो आप foreach के बजाय लूप के लिए उपयोग कर सकते हैं:

for(int i=0; i<myClass.result.Count;i++){
   if(myClass.Result[i].Volume > myClass.result[i+1].Volume)
   {
      Console.WriteLine("Volume "+i+": "+myClass.result[i].Volume+" is higher then volume "+(i+1)+": " + myClass.result[i+1].Volume);
   }

   if(myClass.result[i].Last > myClass.result[i+1].Last)
   {
      Console.WriteLine("Last "+i+": "+myClass.result[i].Last +" is higher then last "+(i+1)+": " + myClass.result[i+1].Last );
   }

}

अद्यतन2:

तुलना करने का एक और तरीका यह है:

एक वैश्विक क्षेत्र घोषित करें:

private List<Result> _oldResult = new List<Result>();

उसके बाद, यह करें:

 foreach(var result in myClass.Result){
    // do something with the list

    // compare only, if oldResult is not empty
    if(oldResult.Count == 0) continoue;

    foreach(var oldResult in _oldResult ){
      if(result.MarketName.Equals(oldResult.MarketName)){
         if(result.Volume > oldResult.Volume)
         {
            Console.WriteLine("Volume: " + result.Volume);
            Console.WriteLine("Volume: " + oldResult .Volume);
         }

         break;
      }
    }
 }

 _oldResult = myClass.Result;
2
Sean Stayns 30 जून 2017, 03:03
ओह धन्यवाद, लेकिन अगर मैं प्रत्येक बाजार के लिए "एक्स" चर में संग्रहीत पिछले वॉल्यूम के साथ वर्तमान वॉल्यूम की तुलना करना चाहता हूं, तो क्या आपके पास यह कैसे करना है इसके बारे में कोई विचार है?
 – 
Abdulrahman Darwish
30 जून 2017, 01:51
फ़ोरैच लूप के ऊपर वॉल्यूम मान रखने के लिए एक वैरिएबल घोषित करें और फ़ोरैच लूप के प्रत्येक पुनरावृत्ति की तुलना करें, पहले पुनरावृत्ति को एक अशक्त जाँच के साथ छोड़ दें।
 – 
Nate Anderson
30 जून 2017, 01:54
आपका लक्ष्य क्या है? क्या आप अधिकतम मात्रा या न्यूनतम चाहते हैं?
 – 
Sean Stayns
30 जून 2017, 02:15
मुझे एक त्रुटि मिल रही है: [परिणाम: एक अभिव्यक्ति के माध्यम से एक प्रकार का संदर्भ नहीं दे सकता। सिक्का का प्रयास करें। परिणाम]
 – 
Abdulrahman Darwish
30 जून 2017, 02:36
1
मदद के लिये शुक्रिया !! :) मुझे विचार मिला लेकिन कोड का परीक्षण नहीं किया :)
 – 
Abdulrahman Darwish
30 जून 2017, 03:23