关于json中包含[]的数据后台应该怎么解析?

年轻帅小伙 2017-12-22 06:12:09
现在有格式

{
“orderId”:"000001",
"goodsId[0]":"001",
"goodsId[2]":"002",
"goodsId[3]":"003",
}

goodsId 是无限延伸下去的。

试了下后台使用

public string orderId{get;set;}
public string[] goodsId{get;set;}

来接收, 事实证明我是想错了!!!
有大神遇到类似的问题? 求解决方案。
...全文
514 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
年轻帅小伙 2017-12-27
  • 打赏
  • 举报
回复
额, 应该是我写错了, key 值是按顺序无限衍生下去的。 后面解决是添加了一个 jquery 的扩展 网上找的。

$.prototype.serializeObject = function () {
                var o = {};
                var a = $(this).serializeArray();
                $.each(a, function () {
                    if (o[this.name] !== undefined) {
                        if (!o[this.name].push) {
                            o[this.name] = [o[this.name]];
                        }
                        o[this.name].push(this.value || '');
                    } else {
                        o[this.name] = this.value || '';
                    }
                });
                return o;
            };
然后 标签name 命名固定, 这个方法会固定给你产生对应的数组。后台就使用 string[] 接收。
its_good 2017-12-22
  • 打赏
  • 举报
回复
关键点是:goodsId 是无限延伸下去的。 后台是没有办法创建一个具体类来作为数据的容器的吧。 因为类一旦创建完成,属性是固定的,不能满足json-key值任意变化的需求吧。(dynamic没研究过,是否适合这个场景,不知道啊。/...) 这种原始数据格式,好奇怪。。。。 如果“goodsId[X]”仅仅是个key,可以考虑使用JSON.NET来转换,并使用其内置的对象类操作数据。 示例:

//json转换
string strJsonValue = "{\"orderId\":\"000001\",\"goodsId[0]\":\"001\",\"goodsId[3]\":\"003\",\"goodsId[10]\":\"new data\"}";
JObject jsonObj = JsonConvert.DeserializeObject(strJsonValue) as JObject;
//获取指定Key值
string strKey = "goodsId[10]";
string strData = jsonObj[strKey].Value<string>();  //结果: new data
圣殿骑士18 2017-12-22
  • 打赏
  • 举报
回复
这个json格式很奇葩, "goodsId[0]":"001", "goodsId[2]":"002", "goodsId[3]":"003", 为什么不是[]格式表示。 goodsId[0]如果被解析,它应该是作为一个属性名来看待。而作为属性名是否可行,你试试在vs ide内能不能这么定义变量名。
年轻帅小伙 2017-12-22
  • 打赏
  • 举报
回复
以前遇到过处理是 前台把Json 解析, 然后把包含 [] 的解析成对象, 这样是可以正常提交到后台并解析。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧