最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已放弃】C#中实现将Json字符串转换为变量

JSON crifan 3626浏览 0评论

【问题】

希望将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的效果的。

如果真的想要转换,倒是有一些可以选择的,具体可参看:

http://www.json.org/

中所列出的,关于C#的部分。

转载请注明:在路上 » 【已放弃】C#中实现将Json字符串转换为变量

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.191 seconds, using 22.02MB memory