Persisted link points don't restore when reloaded

OK, struggled for a day with this now…
I’m serializing and deserializing the points for a bezier curve link. It is editable, and when it persists, the data is stored fine, and the visual element reflects the stored one.
When the chart loads the model though, all of the locations are lost, and it resolves to the default curve.
What property may I or may I not be setting that causes this?

My serialization is done like this:

this.makeTwoWayMetadataBinding("points", "points", null, this.serializePoints),

An example of the points is this:

{"points":"[-340.6,109.9,-380.0,34.0,11.0,108.0,-126.5,19.9]"}

I’m assuming this will be parsed correctly to reload the chart?
Even replacing this with

new go.Binding("points").makeTwoWay()

has the same problem, as reloading the control seems to ignore all the values.
I know that missing out adjusting: go.Link.Stretch causes the deserialize to be ignored, but I have that present, so what else might it be?

My linkTemplate starts with this:
{ contextMenu: partContextMenu, relinkableFrom: true, relinkableTo: true, selectionAdorned: true, layerName: "Foreground", reshapable: true, curve: go.Link.Bezier, adjusting: go.Link.Stretch },

Cheers, Jason

Ah, sorted. The serialization code was creating a string, rather than converting a list of Points to an array of numbers.
Simply replacing this.serializePoints with a new this.convertPoints function solved it.