>source

내 테이블의 필드 중 하나에 JSON 유형이 있으므로 모델 내부에 문자열을 저장하려면 다음과 같이 sth를 수행해야 합니다.

create(modifications: string.to_json,
       ...
     )

이것을 뷰에 표시하려면수정열이 JSON.parse에 의해 구문 분석되어 오류가 발생합니다.784: '"테스트 등록자 기록"'에 예기치 않은 토큰이 있습니다.

짧은 이야기:

2.4.5 :042 > json_test= 'testing the string'.to_json
=> "\"testing the string\""
2.4.5 :043 > JSON.parse(json_test)
JSON::ParserError: 784: unexpected token at '"testing the string"'

왜 이런 일이 발생합니까? 그러면 문자열에서 JSON을 어떻게 만드나요?

레일 5, 루비 2.4.5

mr_muscle2022-01-16 04:21:17

아무 것도 할 필요가 없습니다. ActiveRecord는 유형을 인식하고 올바르게 직렬화하기만 하면 됩니다.

dbugger2022-01-16 04:21:17

@dbugger 사실이 아닙니다. to_json이 없으면 간단한 문자열이 됩니다. json EOD도 문자열이지만 형식이 다릅니다: "\"test note\"" 대 "test note". 한 가지 유사점이 있습니다. 오류는 JSON.parse 784 이후 둘 다에 대해 동일합니다. 다음에서 예기치 않은 토큰

mr_muscle2022-01-16 04:21:17

@SergioTulentsev 최신 버전의 json gem에서 작동하지만 1.7.7과 같은 이전 버전의 경우 해당 오류가 발생하는 것 같습니다. 그의 레일즈 버전은 json gem의 이전 버전을 사용하는 것 같습니다.

Moussa2022-01-16 04:21:17

JSON.parse("\"testing string\"") 가 저에게 효과적입니다.

Sergio Tulentsev2022-01-16 04:21:17

안녕하세요 @mr_muscle님, 테이블의 해당 필드에 JSON 유형을 사용하는 이유는 무엇입니까? 해당 필드에 대해 예상하는 데이터 샘플을 얻을 수 있습니까?

Moussa2022-01-16 04:21:17
  • 이전 .net : Docker-compose가 Dockerfile을 읽지 못했습니다.
  • 다음 python : 베개를 올바르게 가져올 수 없음