2012-06-27 35 views
2

我正在使用JavaScript序列化程序來解析JSON文件。當文件處於有效的json格式時它的運行良好,但例如在最後一個字段中沒有額外的逗號。我怎麼能繞過,我只是從這個文件中檢索replicateid:Javascript串行器額外逗號

{ 
    "Orders": 
    [ 
     { 
      "Rack": "0014", 
      "SampleType": "Calibrator", 
      "Replicate": 3, 
      "Track": 1, 
      "Lane": 2, 
      "ReagentMasterLot": "06100AA02", 
      "ReagentSerialNumber": "60002", 
      "Comment": "HTLV Cal T1L2", 
     } 
    ]  
} 

public static KeyValuePair<bool, int> CyclesCompleted(string fileName) 
{ 
    int cyclesCompleted = 0; 
    JavaScriptSerializer ser = jss(); 
    bool isValid = true; 
    try 
    { 
     CategoryTypeColl ctl = ser.Deserialize<CategoryTypeColl>(LoadTextFromFile(fileName)); 

     if (ctl != null) 
     { 
      List<CategoryType> collection = (from item in ctl.orders 
              select item).ToList(); 

      foreach (var replicates in collection) 
      { 
       cyclesCompleted = cyclesCompleted + replicates.Replicate; 
      } 
     } 
    } 
    catch 
    { 
     isValid = false; 
    } 
    return new KeyValuePair<bool, int>(isValid, cyclesCompleted); 
} 
+1

尾隨逗號可能是C#對象初始有效,但**不是**的JavaScript/JSON有效。很難說這是串行器的錯誤;你應該給它有效的數據* ... –

+0

我同意你,這種情況下擊敗了一個json文件的全部目的,我從儀器中獲取這些文件,所以讓我們看看,我會嘗試json.net庫,看看是否我可以通過 – user1475788

+0

得到請參閱,「[應該語言特定的問題包含標題中的語言名稱?](http://meta.stackexchange.com/questions/19190/should-language-specific-questions-contain-the 「語言名稱在標題)」,其中共識是「不,他們不應該」。 –

回答

2

您應該使用JSON.NET。它是一個開源的庫,用於將.net對象序列化並反序列化爲json字符串,反之亦然。它幾乎解決了這些問題.net json serializiation沒有。

string json = @"{ 
    ""Name"": ""Apple"", 
    ""Expiry"": new Date(1230422400000), 
    ""Price"": 3.99, 
    ""Sizes"": [ 
    ""Small"", 
    ""Medium"", 
    ""Large"" 
    ] 
}"; 

JObject o = JObject.Parse(json); 

string name = (string)o["Name"]; 
// Apple 

JArray sizes = (JArray)o["Sizes"]; 

string smallest = (string)sizes[0]; 
+0

多數民衆贊成酷,我想使用它,你是積極的,它不會大驚過了一個額外的逗號? – user1475788

+0

JSON.NET反序列化比C#更靈活,比你的sheihk sahib – user1475788

+0

@ user1475788更靈活,我使用了JSON.net,它消除了.net沒有的那些問題。 – Talha