我已经收到来自JSON数组的API的响应。 我想将其转换为相应的JSON对象,以便Material Table能够识别它。 API的响应-
但是它没有在表中显示。
当我手动创建如下所示的Array对象时,将填充该表-
let ELEMENT_DATA = [
{"policyID":"119736","state":"Rajasthan","dummy":"no"},
{policyID:"119736",state:"Las Vegas",country:"USA"}
];
console.log(ELEMENT_DATA);
TABLE是动态。我无法为其创建预定义的类。
答案 0 :(得分:2)
更新
function toJSON(input) {
var UNESCAPE_MAP = {
'\\"': '"',
"\\`": "`",
"\\'": "'"
};
var ML_ESCAPE_MAP = {
'\n': '\\n',
"\r": '\\r',
"\t": '\\t',
'"': '\\"'
};
function unescapeQuotes(r) {
return UNESCAPE_MAP[r] || r;
}
return input.replace(/`(?:\\.|[^`])*`|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"|\/\*[^]*?\*\/|\/\/.*\n?/g, // pass 1: remove comments
function(s) {
if (s.charAt(0) == '/')
return '';
else
return s;
})
.replace(/(?:true|false|null)(?=[^\w_$]|$)|([a-zA-Z_$][\w_$]*)|`((?:\\.|[^`])*)`|'((?:\\.|[^'])*)'|"(?:\\.|[^"])*"|(,)(?=\s*[}\]])/g, // pass 2: requote
function(s, identifier, multilineQuote, singleQuote, lonelyComma) {
if (lonelyComma)
return '';
else if (identifier != null)
return '"' + identifier + '"';
else if (multilineQuote != null)
return '"' + multilineQuote.replace(/\\./g, unescapeQuotes).replace(/[\n\r\t"]/g, function(r) {
return ML_ESCAPE_MAP[r];
}) + '"';
else if (singleQuote != null)
return '"' + singleQuote.replace(/\\./g, unescapeQuotes).replace(/"/g, '\\"') + '"';
else
return s;
});
}
let array = [
"{state:Haryanaa, country:India}",
"{state:Goaa, country:India}"
];
let newarray = array.map(item => {
item = toJSON(item.replace(/"/g,"'"));
return JSON.parse(item);
});
console.log(newarray);
您可以使用JSON.parse
let newArray = Object.keys(myArray).map(item=>{
return JSON.parse(myArray[item]);
})
或者,如果您在服务器端使用php,则可以在将json_decode
编码为json之前使用im = Image.new('RGB', (100, 100))
for x in range(100):
for y in range(100):
if y < 50:
im.putpixel((x, y), (42, 214, 99))
else:
im.putpixel((x, y), (206, 101, 10))
im.show()
答案 1 :(得分:1)
您是否尝试过将数据直接存储为数组?
ELEMENT_DATA: any = [];
this._endpoint.getData().subscribe(res => this.ELEMENT_DATA = res);
如果这是数据的结果,则它实际上是一个正确的JSON数据元素,因此它应在HTML结构中使用此元素。
*ngFor="let data of ELEMENT_DATA"
错误似乎发生在服务器端,结果中未引用的字符串是服务中的JSON字符串错误,您是否使用字符串生成器返回JSON?检查应用程序的服务器端。
答案 2 :(得分:0)
您可以这样操作,到目前为止它已写入控制台,
function convert() {
var data = [
"{policyID:119736,state:Rajasthan}",
"{policyID:149737,state:Haryana}"
];
var converted = data.map(d => {
var str = d.replace(/([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)/g, "\"$1\":\"$2\"");
return JSON.parse(str);
});
console.log(converted);
}