【问题标题】:Add items to JSON objects将项目添加到 JSON 对象
【发布时间】:2014-10-14 15:42:39
【问题描述】:

我有一种情况,我不知道该怎么做。我正在尝试将项目添加到从控制器发送的 JSON 对象中。

这是我的模型:

 public class Model1
 {
     public Model2 item {get;set;}
     public List<Model2> items {get;set;}
      //

在页面中

 var jsonData = @Html.Raw(JSON.Encode(Model))

这给了我基本但空洞的模型。现在在页面中,我填写了各个字段,并希望将项目添加到模型中以进行发布。所以:

 jsonData.item.field1 = $("#field1").val();

然后我想添加到项目列表中,但我找不到任何有效的东西:

 jsonData.items.add(jsonData.item)

不起作用会引发错误。

 jsonData.items.push(jsonData.item);  

有效,但我添加的每个项目最终都是一样的。这意味着当我添加第二个项目时,列表中有两个项目,但它们具有相同的值。任何帮助将不胜感激。

【问题讨论】:

  • jsonData.item 何时获得新价值?如果你不改变它,每次都会一样
  • 您的问题似乎与 JSON 无关,而是与数组和对象在 JavaScript 中的工作方式有关。 jsonData 是一个 object,而不是 JSON。如前所述,如果您不为 jsonData.item 分配新值,那么您只是在改变现有值,而不是创建新值。
  • 你能更清楚一点,并发布正确的代码,正如@pollirrata 所说,我认为你不止一次添加了这个值并且永远不会改变
  • 用户填写文本框,然后单击添加,我使用页面中字段的值遍历 jsonData.item 字段,然后尝试将其添加到列表中。
  • 我相信这是您问题的一个更简单的例子:var baz = []; var foo = {bar: 42}; baz.push(foo); foo.bar = 21; baz.push(foo); console.log(baz);。关于 JavaScript 的一个基本知识是对象是可变的,变量只保存对这些对象的引用

标签: javascript c# jquery asp.net json


【解决方案1】:

众所周知,Javascript 可以用作 OO 语言,并且可以在 javascript 中动态创建类和对象。 据我了解,您正在使用以下代码来获取 JavaScript 中的类属性

 var jsonData = @Html.Raw(JSON.Encode(Model))

当这个 JSON 返回到客户端时,它被认为是单个对象。

所以,你可以声明一个函数,充当类:

   function Model2(jsonData ) {
        this.name       = jsonData.name;
        this.discovered = jsonData.discovered;
    };

    var objModel2_1= new Model2(jsonData);

现在, 你可以声明一个数组来添加objModel2。

var arrModel2=[];
// add new objects

attModel.push(objModel2_1);   

最后, 完成后,您可以使用现有的 jsonData 对象来填充 即

   jsonData.item=objModel2_1;
   jsonData.items=attModel;

希望对你有所帮助。

【讨论】:

  • 好的,成功了。我必须创建一个单独的数组,添加到它,然后将列表设置为等于它。现在我的问题是将模型发布回服务器。
  • 发布这些数据并不难。如果您使用 javascript 和 ajax 发布,则必须对对象进行字符串化并发布。收到后,对其进行 DE 序列化以获取您自己的对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2021-03-19
相关资源
最近更新 更多