【问题】
希望将skydrive中,某url返回的html中的json字符串,转换为变量。
即,希望可以实现,类似于Python中的json.loads,将json字符串转换为字典变量,然后就可以接着处理了。
之前其实一直都是直接用C#的regex去获得对应的变量值的,但是刚刚发现,skydrive返回的json字符串,可能会变化,比如刚发现的,又多了个:
"itemType": 32,
夹杂在:
"id": "9A8B8BF501A38A36!601",
和
"lastModifierCid": "9A8B8BF501A38A36",
中间,导致之前所写的regex的pattern,就无效了。
所以此处希望还是通过json转换为变量,然后就不怕以后找不到所需要的变量的值了。
【解决过程】
1.参考:C# 中使用JSON – DataContractJsonSerializer,结果发现,其:
(1)需要实现知道变量的名字:万一skydrive的json变化了,还是无法继续工作
(2)需要.NET 3.5:此处为了兼容性,我这里最好还是在可以的前提下,使用2.0而不要用3.5.
所以,放弃此法。
2.也看到了:C#解释json,反正最后看下来,才发现,原来此处还是需要实现知道json字符串所包含的变量名字的,然后才可以序列化和反序列化(这个之前折腾过,所以知道啥意思了)。意味着,C#中,还是无法实现像Python中的json.loads那样方便的直接将json字符串转换为字典变量,而无需知道其中间包含了哪些变量。
因此,看来此处,还是需要放弃json转换了。因为如果都完全实现知道json字符串中所包含哪些变量,那么也就和我此处的regex去处理,没啥区别了。
所以还是继续用regex吧。
【总结】
C#中,想要实现将json字符串转换为变量,还是需要知道本身转换后的变量的所有的field的,而无法实现python中json.loads的效果的。
如果真的想要转换,倒是有一些可以选择的,具体可参看:
中所列出的,关于C#的部分。
转载请注明:在路上 » 【已放弃】C#中实现将Json字符串转换为变量