问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何NameValueCollection中转换成JSON字符串

发布网友 发布时间:2022-04-29 20:49

我来回答

1个回答

热心网友 时间:2022-06-22 14:08

最近在做一个搜索程序的优化改进,将搜索结果按照查询的参数不同进行缓存。缓存的Key很自然的就想到了用查询字符串,而获取查询字符串的最简单方式是通过Request.QueryString.ToString()方法。查看了QueryString的定义类型是NameValueCollection,就误以为这是NameValueCollection的重写了ToString()的方法,于是放心地将代码转移到了业务逻辑层。因为还要重构查询参数,因此重新构建了一个NameValueCollection,并想当然地用ToString()的结果作为Key。但实际运行之后发现,每次的结果都一样的,都是第一次的查询结果。经调试,发现NameValueCollection的ToString()方法并没有重新,还是返回的是“System.Collections.Specialized.NameValueCollection”。
  先看看调试时的情况,发现QueryString的实际类型是System.Web.HttpValueCollection,该类型继承自NameObjectCollectionBase,跟NameValueCollection的基类是一样的。那么最有可能的就是QueryString直接继承了NameValueCollection,并且重写了ToString()的方法。
普通NameValueCollection的表现如下
根据以上判断基本为什么QueryString表面上看起来是NameValueCollection但又实际上表现出不同的ToString表现。
  接下来继续了解一下System.Web.HttpValueCollection是何方神圣。该类用起来似乎很方便,也尝试在代码中使用,但提示找不到类。在MSDN中也没有明确该类的记录,可以基本判定为私有的类型或者受保护的。搜索之后发现,该类是的完整定义是System.Web.HttpValueCollection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,只能通过反射的方式访问或修改该类型。因此想用这个类的话,基本上是比较麻烦,不太值得。但是在一般开发者眼中,都希望查询字符串的和NameValueCollection能很顺畅的进行呼唤,通过ToString()的简单方式就能获得。目前要实现两者的转换有以下方式
从查询字符串内容转换到NameValueCollection
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... JSON格式的String 怎么转成 net.sf.json.JSONObject 如何将JSON语法("key:value")中的":"转化为"," QT中socket接收到的udp报文:\uFFF1,怎么批量转成QString类型? 如何与意大利人做生意? 意大利人好相处吗?他们有什么禁忌或习惯需注意吗? 为什么意大利人,西班牙人和葡萄牙人不被美国人视为白人? 意大利人和阿尔巴尼亚人是东哥特人后代 意大利人极其反感法国和德国,这背后有何渊源? 请问现代意大利人和古罗马人是什么关系?前者是后者的直接传承吗? 意大利人的血统问题,和古罗马人有血缘关系吗? 长安和传祺哪个质量好 请问现在的意大利人与古代的罗马人之间有多少联系?为什么意大利人的战斗力还不如被罗马人视为蛮夷之族的 看了天气预报,贵州一直有雨,不知道适合不适合去黄果树瀑布,小七孔 传祺M8的质量如何,这车能买吗?有已经入了的兄弟能进来说说吗? 意大利人和古罗马人是什么关系? 意大利人相对于其他国家的人来说有哪些特点 两台小米手机进行一键挽机,为什么旧手机总显示无法访问该互联网。 意大利人种是什么人种? 跟美国人有什么区别? 广汽传祺的发动机质量到底怎么样? 现代意大利人和古罗马拉丁人血缘关系还挺深的吧? java String字符串怎么转换成List,还是说先转换成json,再由json转换成list android怎么把json转换为hashmap qjson怎样和通信结合起来用 耳朵旁一个百是什么字 耳旁加百念什么 耳刀旁加个百字 四芯的电话线断了,怎么接,蓝,橙,白,白,和蓝,橙,白,棕 左边一个左耳朵右边一个百念什么? 左边一个耳刀旁,右面一个百读什么 一个包耳旁加个百字用拼音怎么念 左边一个百右边耳朵旁的怎么读? 微信地区怎么设置让别人看见是英文? 一个包耳旁加个 百 字用拼音怎么念 四芯的电话线,两个白色一红一绿,怎么接水晶头呢?一般那两根是有效的。 一百只耳朵(猜一个字) 一个白一个耳朵旁是啥字 苹果6手机微信里面的地区显示英文怎么调中文 双耳旁加个百是什么字? 猜字谜 一百个耳朵猜一个字 “耳朵旁”加个“元”是什么字?