2012-12-24 83 views
0

我在使用Json解串器時遇到了一些問題。返回的Json中的一個值是大的,並拋出異常。我其實不需要它返回的信息,所以我想忽略它。我想最好的方法是搜索json字符串的屬性,然後將值設置爲null。Regex.Replace matching

下面是返回的Json樣本給我的錯誤。

  "attributes": [ 
       { 
        "defindex": 143, 
        "value": 2111522248, 
        "float_value": 364329070052570260000000000000 
       }, 

我想用一個空值,或nill取代「float_value」屬性(即36432907005257026000000000),所以它不會Json的反序列化過程中拋出異常。

我使用Regex.Replace(json, "\"float_value\": \\d+", String.Empty);

但它似乎沒有被移除,並且仍然拋出異常。

+2

之後是否有同樣的例外情況?因爲在刪除float_value行之後,在對象中留下了尾隨逗號......在正則表達式之前,?\ s *會執行這個技巧 –

+0

在替換爲正確刪除我想要的項目之後,確實發生了另一個錯誤Json,正如你所說的,我認爲這是因爲前面「價值」線上的尾隨逗號。 這是我嘗試使用@「,?\ s」「float_value」「:\ d +」 正則表達式但它不適用於此。它將刪除float_value,而不是確定逗號。 – Coffman34

+0

它需要是@「,?\ s *」「float_value」「:\ s * \ d +」來獲得任意數量的空格和正則表達式選項需要設置爲單行來替換多行 –

回答

0

當你說 \\d+你實際上是逃避第二個 \,並沒有表明你想 \d。試試這個:

Regex.Replace(json, "\"float_value\": \d+", String.Empty); 

下面是你以前有什麼細分。請注意字面 dhttp://www.regex101.com/r/wQ6jD5

編輯:Nvm,這不適用,因爲您使用的是普通字符串而不是逐字字符串。正如Jj'所指出的那樣,我認爲問題在於你沒有刪除前一行的,

+0

使用您提供的內容會導致無法識別的轉義序列。 – Coffman34

+0

咦?它適用於我... http://www.regex101.com/r/cO2wZ2。是否regex101網站或您的代碼無法識別的esape序列? – Michael

+0

Visual Studio裏面。它給了我一個無法識別的轉義序列。 – Coffman34