我試圖解析一個C#對象包含一個JSON的字符串,看起來像這樣: 我知道這不是真正有效的JSON,但我不能選擇它,它發送一個裝置。這就是爲什麼我試圖用{}替換[]以使其看起來像一個有效的對象。解析沒有屬性名稱的Json到C#
[2, "2", "text", {Object}]
我創建了以下類:
public class MyClass
{
[JsonProperty(Order = 0)]
public int TypeRequest { get; set; }
[JsonProperty(Order = 1)]
public string UniqueID { get; set; }
[JsonProperty(Order = 2)]
public string Action { get; set; }
[JsonProperty(Order = 3)]
public JObject Payload { get; set; }
}
我想解析{}對象後(我首先要知道的「操作」屬性,因爲對象依賴於動作) 。
到目前爲止,我已經做了:
string userMessage = "[2, "2", "text", {Object}]";
if (userMessage.Length > 2)
{
// We need to remove the first [ and the last ] to be able to parse into a json object
StringBuilder sb = new StringBuilder(userMessage);
sb[0] = '{';
sb[sb.Length - 1] = '}';
userMessage = sb.ToString();
}
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
MyClass objectJSON = jsonSerializer.Deserialize<MyClass >(userMessage);
但它不工作我得到以下異常:
無效的對象傳入, ':' 或 '}' 的預期。 (3):{對象}}
我也有試過JObject.Parse而不是和我:
無效的JavaScript屬性標識字符:,。路徑'',第1行, 位置2.
你知道該怎麼做嗎?我想避免必須用逗號分割我的JSON,並有最乾淨的方式來做到這一點。
你的userMessage應該用大括號'{}'而不是方括號'[]'包裝,因爲這會表明它是一個數組。它然後也需要屬性名稱。 – TylerBrinkley
嘗試使用以下方法驗證您的JSOn:https://jsonformatter.curiousconcept.com/ –
如果有方法將輸入數據更改爲有效的JSON - 這將是最佳選擇,否則需要定製解析器以獲取{object}。 – Vladimir