【发布时间】:2017-01-10 23:26:12
【问题描述】:
我在运行时得到一个字符串。该字符串采用 JSON 格式(键值对)。其中一个键是“userId”。我需要检索userId 的值。问题是我不知道“userId”键的位置。字符串可以看起来像{"name":"XX", "userId":"YYY","age":"10"},也可以看起来像{"age":"10", "name":"XX", "userId":"YYY"},或者看起来像{"age":"10"}
我正在考虑使用substring()
var index = myString.IndexOf("userId\":\"");
if(index != -1){
myString.Subtring(index, ???)//How to specify the length here
}
我不确定,怎么说继续,直到找到下一个"(双引号)
【问题讨论】:
-
为什么不直接反序列化 JSON 而不是重新发明轮子?
-
使用适当的 JSON 解析器并实际读取数据。不要尝试用字符串函数自己解析它。
-
@ErikPhilips:我想对 JSON 进行反消毒,但字符串的格式不固定。
-
我同意其他 cmets 的观点,即尝试自己编写一个愚蠢的 JSON 解析器是荒谬的。只要做对并使用现有的工具。也就是说,您发布的一小段代码表明您知道使用
string.IndexOf()方法来查找文本"userId:"。因此,如果您知道这一点,为什么不知道使用same method 来查找文本"\""? -
@PeterDuniho:谢谢。我明白你在说什么。
标签: c# .net string linq substring