嗨使用字符串如何檢索數量從下面的字符串,在C#.NET
{"number":100,"data":[test]}
的數量可以是任何長度。
我用下面的代碼。但它給和錯誤信息
strValue.Substring((strValue.IndexOf(":")+1), (strValue.IndexOf("data")));
輸出來像
100, 「數據」:
感謝,
嗨使用字符串如何檢索數量從下面的字符串,在C#.NET
{"number":100,"data":[test]}
的數量可以是任何長度。
我用下面的代碼。但它給和錯誤信息
strValue.Substring((strValue.IndexOf(":")+1), (strValue.IndexOf("data")));
輸出來像
100, 「數據」:
感謝,
正如Jon所述,您的輸入字符串似乎是需要反序列化的JSON字符串。您可以編寫自己的解串器,或者使用現有的庫,例如Json.NET。這裏是一個例子:
string json = @"[
{
""Name"": ""Product 1"",
""ExpiryDate"": ""\/Date(978048000000)\/"",
""Price"": 99.95,
""Sizes"": null
},
{
""Name"": ""Product 2"",
""ExpiryDate"": ""\/Date(1248998400000)\/"",
""Price"": 12.50,
""Sizes"": null
}
]";
List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);
它看起來像你的輸入字符串是JSON。是嗎?如果是這樣,你應該使用正確的JSON解析器庫像JSON.NET
解決根本問題的方法,而不僅僅是症狀!我想我應該閱讀使用JSON,因爲我不斷看到人們使用它。 –
@JonSenchyna它像其他任何東西一樣有優點和缺點。重要的是,控制字符比XML更輕,ECMAScript可以將它當作本地對象,所以對於JavaScript和其他ECMAScript實現來說非常方便。 –
+1使用JSON的最佳方法。儘管如果僅在代碼中的一種情況下解析字符串,該庫可能會有一些不必要的開銷。 – StuperUser
我猜你需要使用的IndexOf(「‘)的IndexOf的istead(’數據」)
你試圖接近。有兩個(可能是三個問題)我找到了。
SubString
的返回值分配給某些內容,但如果不是,最終結果是strValue
保持不變。總體而言,您當前致電string.Substring
的結果返回100,"data":[tes
。 (並且據我所知,它不存儲結果)。
試試下面的代碼:
string justTheNumber = null;
// Make sure we get the correct ':'
int startIndex = strValue.IndexOf("\"number\":") + 9;
// Search for the ',' that comes after "number":
int endIndex = strValue.IndexOf(',', startIndex);
int length = endIndex - startIndex;
// Note, we could potentially get an ArguementOutOfRangeException here.
// You'll want to handle cases where startPosition < 0 or length < 0.
string justTheNumber = strValue.Substring(startIndex, length);
注意:此方法不處理,如果"number":
是在你的字符串中的列表中的最後一項,但它應該在它處理所有其他位置。
如果您的字符串變得更復雜,您可以嘗試使用Regular Expressions來執行搜索。
如果你使用'strValue.IndexOf(「,」))',那會返回逗號所在的位置嗎?難道你不應該通過你想要的子串的長度嗎?像'strValue.IndexOf(「,」) - strValue.IndexOf(「:」)'。 – comecme
這就是我得到的結果,除了我發現的第一個明顯的問題之外,沒有仔細檢查OP的其他問題的代碼。你100%正確。原始代碼將查找以「:」開頭的字符串,以及以下IndexOf(「,」)字符。我會馬上更新上述內容。 –
strValue.Substring((strValue.IndexOf(":")+1), (strValue.IndexOf(",")));
以這種方式解析JSON彈簧是非常糟糕的做法,因爲一切都是硬編碼的。你有沒有使用第三方庫來解析JSON字符串,如Newtonsoft JSON。
這看起來像一個JSON字符串的開始。是對的嗎? –
什麼是錯誤信息? – StuperUser
是的。錯過了其他一點。{「number」:100,「data」:test} – Joshua