2017-01-04 79 views
-2

我只是無法弄清楚這一點。 已經用JsonConvert.SerializeObject(item)試過了,我也有一個奇怪的字符串。解析這種json字符串化的字符串「{」value 「:[」18 「]}」

如何從這個字符串化的字符串中刪除值?

"{\"value\":[\"18\"]}" 

編輯@

這是我字符串化它:

var data = new FormData(); 
    data.append('cates', JSON.stringify(toSend)); 

,這裏是什麼輸出我從模型>道具列表

https://gyazo.com/b9a6f212345b854796af3d80e4169a23

@deserializing得到

 foreach (var item in data.cates) 
     { 
      var l = JsonConvert.DeserializeObject(item); 
     } 
+0

爲什麼你的JSON有\」字符?如果你反序列化之前更換該字符串發生?嘗試移除從字符串 – NicoRiff

+1

你將需要提供更多的背景。你在哪裏看到的那字符串?在文件中?在C#源代碼中?在Visual Studio調試器中? –

+0

轉義是因爲JSON字符串在一個字符串中。因此,報價必須逃脫 –

回答

1

看起來好像你的JSON已經雙串行化,即一個對象序列化到JSON,那麼該字符串連載再次。請參閱JSON.NET Parser seems to be double serializing my objects瞭解如何使用asp.net-web-api輕鬆完成此錯誤的示例。

解決這個問題的最好方法是不要雙重序列化開始的JSON。如果出於某種原因這不可能是固定的(例如因爲雙串行化JSON是從一些第三方服務,則不能修改退回),你總是可以反序列化的兩倍,以及:

var json = @"""{\""value\"":[\""18\""]}"""; 

Console.WriteLine("JSON: "); 
Console.WriteLine(json); // Prints "{\"value\":[\"18\"]}" 

var intermediateJson = JsonConvert.DeserializeObject<string>(json); 
var root = JsonConvert.DeserializeObject<RootObject>(intermediateJson); 

Console.WriteLine("Reserialized root: "); 
Console.WriteLine(JsonConvert.SerializeObject(root)); // Prints {"value":["18"]} 
Console.WriteLine("value:"); 
Console.WriteLine(root.value.First()); // Prints 18 

使用,對於根對象:

public class RootObject 
{ 
    public List<string> value { get; set; } 
}