Я не смог найти полезного решения.
Я работаю на стороне сервера python 3.6 (django rest-framwork) и на стороне клиента angular 5.
На сервере:
class TypesView(APIView):
def get(self,request):
a = ['Cat','Dog']
j = json.dumps(a)
return Response(data=j, status=status.HTTP_200_OK)
Я пытаюсь разобрать это на клиенте:
public getAnimalRaces(): Observable<string[]>{
const path = environment.apiEndpoint + "animals/races/"
return this._http_client.get<string[]>(path)
}
но я продолжаю получать: Ошибка при попытке различить '["Кошка", "Собака"]'. Разрешены только массивы и итерации.
Вот что возвращается клиенту:
"[\"Cat\", \"Dog\"]"
Любые идеи?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пытаетесь выполнить итерацию по строке.
Вам нужно проанализировать ответ как JSON, который превратит ответ в массив, который вы затем можете использовать, например, с *ngFor в шаблоне.
this._http_client.get<string[]>(path)
.map((res) => JSON.parse(res));
Ваш ответ оформлен в виде строки. Чтобы он работал, вы должны отправить его как простой JSON на стороне сервера или обработать его как строку и использовать JSON.parse() на стороне клиента.
Единственное отличие: this._http_client.get <string> вместо string []. Спасибо!