日期:2014-05-18  浏览次数:20862 次

正则格式化json字符串键值对的问题
这几天好多正则,感觉一下子火了。。。。我也将我自己的一个问题贴出来请教大家,望指点

c#解析json 其键值对要严格按照 "名称":"值" 这样的格式

现有如下json字符串
{type:"2",PvNum:"",Price:"1989",UploadSec:"",UploadTime:"",RemainNum:"123",SoldNum:"77",MaxBuyNum:"1", StockAttr:"颜色:留言颜色和快递", StockString:"0#颜色:留言颜色和快递~,19.890000,123,;"}

上面的键值对是这样的 名称:"值"
我想格式化成这样 "名称":"值"


 
Regex.Replace(jsonString, @"[\w]+(?=:)", "\"$0\"");//连续字母或数字以:结尾且不包含:
我发现这样对上面的json值里面也会截断
 
于是我改成这样,
Regex.Replace(jsonString, "\\b[\\w]+(?=:\")", "\"$0\"");//连续字母或数字以:"结尾且不包含:"
可以达到我要的效果
因为我是以:"来判断结束与否,所以我感觉自己写的不规范,不通用,望大家能够指点

------解决方案--------------------
替换结果:

"type":"2","PvNum":"","Price":"1989","UploadSec":"","UploadTime":"","RemainNum":"123","SoldNum":"77","MaxBuyNum":"1"," StockAttr":"颜色:留言颜色和快递"," StockString":"0#颜色:留言颜色和快递~,19.890000,123,;"
------解决方案--------------------
探讨
name:"" 这样的情况会匹配不了