2

Javascript シリアライザーを使用して JSON ファイルを解析しています。ファイルが有効なjson形式である場合は正常に実行されますが、最後のフィールドに余分なコンマがあるなどの理由で失敗します。どうすればそれを回避できますか。このファイルからレプリケート ID のみを取得しています。

{
    "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);
}
4

1 に答える 1

2

JSON.NETを使用する必要があります。これは、.net オブジェクトを json 文字列にシリアル化および逆シリアル化するためのオープン ソース ライブラリです。.net json シリアル化では解決できないこのような問題をほぼ解決します。

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];
于 2012-06-27T19:26:16.593 に答える