如何将 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);
我需要一些帮助,请转换我准备由 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);