我正在使用JSON API。由于c#不接受像 - (减号)或。 (点),我不得不用_(下划线)代替每个字符。当JSON响应作为字符串接收时,会发生替换,以便每个包含 - 或a的属性名称。将它替换为_,那么每个属性名称将与它将被反序列化到的类中的属性名称相同。智能替换字符串
使其更清晰,下面是一些例子:
我收到以下JSON:{ "id": 1, "result": [ { "data": [ { "adm-pass": ""}]}
在我想反序列化类为我有这样的属性:public String adm_pass {get; set;}
所以我更换了与减一个下划线,以便NewtonSoft解析器可以相应地反序列化它。
我的问题是,我有时我在我的JSON中得到一些负整数。因此,如果我在{"beta" : -1}
中执行字符串替换,我会得到解析异常,因为-1(此处为整数)变为_1,无法正确反序列化并引发异常。
有没有办法巧妙地替换字符串,以便我可以避免此错误? 例如,如果 - 后跟int,则不会被替换。 如果这种方式不存在,是否有解决这类问题的方法?
这很酷。我想知道微软的DataContractJsonSerializer是否有类似的东西。我看了一下,它有一种方法可以用[DataMember(Name =“user_id”)]来更改名称,但是我找不到它是否支持点(。)或破折号( - )。 – Rhyous
非常感谢,这解决了整个问题。 –
@Rhyous即使使用Microsoft的DataContractJsonSerializer,您也可以执行类似[DataMember(Name =“user-id”)]或[DataMember(Name =“user.id”)]的操作。这些支持 – Ferdin