【问题标题】:Issue parsing arrays to json将数组解析为 json 问题
【发布时间】:2011-11-22 09:02:32
【问题描述】:

我的问题: 我正在编写一个网络应用程序来管理联系人。在服务器端,我正在使用 Razor 语法 (C#),并且我正在使用 json 编码字符串作为标头向我的服务器发送 ajax 请求。 test.cshtml 收到如下内容:

var j = Json.Decode(Request["json"]);

现在我可以完美地使用所有对象了。但!我在 json 编码字符串中有一个数组,例如...,"persons":[1,2,3],... Json.Decode 将其解码为一个数组,我可以使用该数组将数据写入我的数据库。完成此操作后,我想使用以下方法将更新的对象发送回客户端(数组尚未更改或进行任何其他操作):

<text>
    @Html.Raw(Json.Encode(j));
    @j.persons.Length;
</text>

persons 元素的输出是...,"persons":{},...,但persons 的长度应该是3。我究竟做错了什么?是否有参数告诉 Json.Encode 也对子对象和数组进行编码?

感谢您的支持

PS:@j.persons.Length 只是为了证明数组不为空且存在

【问题讨论】:

    标签: c# arrays json razor


    【解决方案1】:

    我发现了问题。我必须用循环强输入自动生成的数组(来自 Json.Decode):

    int[] temp = new int[j.persons.Length];
    for(var i = 0;i < j.persons.Length;i++){
        temp[i] = (j.persons[i] is string)?Int32.Parse(j.persons[i]):(int)j.persons[i];
    }
    j.persons = temp;
    

    感谢您的方法约瑟夫

    【讨论】:

      【解决方案2】:

      因为它只编码根而不是人尝试j.as_json(:include =&gt; :persons)

      【讨论】:

      • 感谢您的回答,但似乎不起作用。这不是 C++ 吗?我正在使用 C#... 有没有等价的?
      • 对不起,我在那里越过了我的语言。 j的结构是什么?
      • 我可以访问 j.id、j.name、j.color、j.persons。 json 字符串看起来像 {"id":0, "name":"family", "color":"000000", "persons":[1,2,3]}。感谢您的帮助
      猜你喜欢
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      相关资源
      最近更新 更多