如何将 javascript 数组更改为 angular-schema-form 的 JSON 对象?

How to change a javascript array to a JSON object for angular-schema-form?

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

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

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

我在 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 

[
  [],
  []
]

如果您对我有任何指导,请按照我的指示进行,将不胜感激。

谢谢 B

我使用 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

这有帮助吗?

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

当您尝试序列化时会发生什么,数组(仍然是空的)序列化为空数组并且您丢失了它的对象属性。

尝试:

var fieldObject = {};

这是一个 fiddle 演示行为 - http://jsfiddle.net/ko8d0w5b/

试试这个 fiddle.. 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);