如何将javascript数组更改为角度模式形式的JSON对象

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

本文关键字:模式 对象 JSON javascript 数组      更新时间:2023-12-25

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

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

我能够毫无问题地创建数组,但是,当我现在尝试为角模式表单对象准备数组时,这就是我将其转换为所需的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,但结果为空。

我也试过把数组传给angular.toJson,但我也得到了一个空的结果。

var myJsonString = angular.toJson(objectSchema, true);
console.log(myJsonString);
// result 
[
  [],
  []
]

如果您有任何指示,请遵照执行,我们将不胜感激。

谢谢B

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

当您尝试序列化时,会发生的情况是数组(仍然为空)序列化为空数组,并且您会丢失其上的对象属性。

尝试:

var fieldObject = {};

这是一把小提琴,展示了这种行为——http://jsfiddle.net/ko8d0w5b/

试试这个小提琴。。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);

我使用微软的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

这有帮助吗?