1

我需要一些帮助,请转换我准备由 angular-schema-form 使用的 javascript 生成的数组(需要 JSON 对象)。

我使用 for 循环创建了一个数组,其中包含从 $http 请求中检索到的一些字段项。

但是,我可以毫无问题地创建数组,当我现在尝试为 angular-schema-form 对象准备它时,我在将其转换为所需的 JSON 对象格式时遇到了问题。

我像这样在javascript中创建数组,

var objectSchema = [];

for(index = 0; index < instanceFields.length; index++)
{
    var fieldObject = [];

    fieldObject.id = instanceFields[index].id;
    fieldObject.title = instanceFields[index].description;
    fieldObject.type = pass_type;
    fieldObject.value = instanceFields[index].value.raw;

    objectSchema.push(fieldObject);

}

这是数组的 console.log。

console.log(objectSchema);

// result

0: Array[0]
   id: "103859"
   length: 0
   title: "Summary"
   type: "string"
   value: ""
1: Array[0]
   id: "101842"
   length: 0
   title: "Job Type"
   type: "string"
   value: "696"

我尝试使用 JSON.stringify 将上述内容转换为 JSON,但这会返回一个空结果。

我也尝试将数组传递给 angula.toJson 但我也得到一个空的结果。

var myJsonString = angular.toJson(objectSchema, true);
console.log(myJsonString);

// result 

[
  [],
  []
]

如果您对我有任何指导,请遵循它,我们将不胜感激。

谢谢乙

4

3 回答 3

5

您看到此行为是因为您将 fieldObject 实例化为数组而不是对象。然后,您尝试向该数组添加属性,这实际上并没有什么意义,更重要的是,它实际上并没有按照您的意图填充数据结构。

当您尝试序列化时会发生什么,即该数组(仍然为空)序列化为一个空数组,并且您会丢失其上的对象属性。

尝试:

var fieldObject = {};

这是一个演示行为的小提琴 - http://jsfiddle.net/ko8d0w5b/

于 2015-02-16T20:55:14.023 回答
1

试试这个小提琴.. http://jsfiddle.net/lalith_ram/809ubtvj/ 将变量 fieldObject 实例化为对象。

var objectSchema = {};

for(index = 0; index < 1; index++){

    var fieldObject = {};
    fieldObject.id = "101";
    fieldObject.title = "Hello";
    fieldObject.type = "sometype";
    fieldObject.value = "somevalue";
    objectSchema = fieldObject;


}

var test = JSON.stringify(objectSchema);

alert(test);
于 2015-02-16T22:02:43.510 回答
-1

我使用 Microsoft 的 JavaScriptSerializer,它对我们来说很好用。AFAIK,JavaScript 格式与 JSON 格式相同(即“JSON”中的“JS”)。像这样使用它:

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string myJsonString;

myJsonString = javaScriptSerializer.Serialize(myObject);

可能还有其他更快或更好的序列化程序,但这是仅使用 Microsoft 工具的快速方法。

这里引用了微软的 DataContractJsonSerializer,看起来更复杂:https ://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx

这有帮助吗?

于 2015-02-16T20:49:25.523 回答