如何在c#中反序列化一个未知的JSON字符串到一些对象

本文关键字:未知 JSON 字符串 对象 一个 反序列化 | 更新日期: 2023-09-27 18:08:52

我需要在c#中解析(键,值方面)一个以JSON格式构建的字符串(确切地说,我需要解析Knockout data-bind的绑定参数)。我遍历html文件并提取绑定。我想修改每一个绑定(字符串方面),但是解析字符串对我来说真的很难,因为我不能真正知道每个绑定在哪里停止,另一个在哪里开始。

例如:

data-bind="text:'ggggg',event:{mouseover:x=function(){alert(1);return 'd,y'}}"

将产生以下字符串:

"text:'ggggg',event:{mouseover:x=function(){alert(1);return 'd,y'}}"

我想以如下方式修改字符串:

newString= "text('gggg'),event(mouseover(x=function(){alert(1);return 'd,y'}))"

我发现最好的方法是通过JSON反序列化字符串,然后对我来说更容易访问每个绑定元素。我是用c#写的,但是因为我检查了html文件,每个数据绑定都是不同的,可以包含不同数量和类型的属性,所以我希望有一个可以反序列化的通用对象。我检查了DataContractJsonSerializer,但我不知道它如何解决我的问题。你能告诉我怎么做对我的情况最好吗?玛丽

如何在c#中反序列化一个未知的JSON字符串到一些对象

你可以这样做:

var obj = ko.bindingProvider.instance.getBindings(yourDomElement,
                                                ko.contextFor(yourDomElement));
alert(JSON.stringify(obj));

然后对obj做任何你想做的。

小提琴

但是…嗯…不!