Angular:将带有自定义参数的JSON映射到对象

时间:2018-07-29 14:45:57

标签: angular typescript angular5

我是Angular的新手,所以尽管我很努力地找到它,但问题的解决方案可能非常简单。该问题与通过打字稿与JSON映射到对象的链接有关。如何映射简单的数据类型非常明显,但是在我的情况下,我有一个带有字符串参数的JSON对象,该字符串参数表示自定义数据格式。看起来是这样的:

SELECT * 
INTO #TempImportRowsTable
FROM (
    SELECT *
    FROM [NameOfExistingTable]
    -- WHERE ID = 1
) AS createTable

-- If needed make other alterations to the temp table here

ALTER TABLE #TempImportRowsTable DROP COLUMN Id

INSERT INTO [NameOfExistingTable]
SELECT * FROM #TempImportRowsTable

DROP TABLE #TempImportRowsTable

我试图在构造函数中解析它,但似乎它不会调用:

{
            "id": 2,
            "coordinates": "POLYGON ((93.85459125041562 2.2894918584196797, 93.85478973388572 2.2894543170028445, 93.85515987873577 2.2895723043110532, 93.8554173707562 2.2897761005578046))"
        }

有人可以帮我找到解析此类数据的好方法吗?

1 个答案:

答案 0 :(得分:0)

我的方法是使用正则表达式捕获坐标:

const coordinatesArray = coordinates.match(/(\d+\.\d+)\s(\d+\.\d+)/g);
this._points = coordinatesArray.reduce((acc, current) => {
  const latLong = current.split(" ");
  acc.push(
    new CoordinateModel(Number(latLong[0]), Number(latLong[1]))
  );
  return acc;
}, []);

如果您说未调用构造函数是因为您未按预期使用new RegionModel(id, coordinates)类。

注意::在构造函数中解析字符串会很好,如果您需要更改解析字符串的方式,则可以从其余逻辑中隐藏实现细节( (由于另一个String表示形式),您只需更新RegionModel类。

希望有帮助!