Versuch mal, ob das den Fehler (zumindest an der Stelle) behebt:
Delphi-Quellcode:
if Assigned(TJSONObject(Value).GetValue('name')) then
PlName := TJSONObject(Value).GetValue('name').Value;
Falls ja, könnte man über eine lokale Variable vom Typ TJSONValue nachdenken, die man zuerst befüllt, im Anschluss auf nil prüft und erst danach versucht, den Wert auszulesen.
[edit] Oder man benutzt die generische Funktion TryGetValue<T> von TJSONObject, das ist etwas bequemer.
Delphi-Quellcode:
if not TJSONObject(Value).TryGetValue<string>('name', PlName) then
PlName := '';
[/edit]