2014-06-20 4 views
4

필드에 포함 된 유형이 약간 다른 큰 json 파일이 있습니다. 내가 두 번째 비 정렬 화하는 경우오류가있는 필드 이름 가져 오기 json unmarshal

{ "a":"1" } 

는 대

{ "a":1 } 

내가 얻을 :이 jsons이 크므로

cannot unmarshal number into Go value of type string 

그러나 내가 그렇게 오류가 실제 필드를 가지고 싶습니다 나는 그들을 고칠 수있다. UnmarshalTypeError에는 Struct의 필드 형식이 들어 있지 않습니다.

누구나 필드 이름을 얻는 방법을 알고 있습니까? (디버깅 안 함 나는 여러 가지 다른 필드가 잘못있다)

[편집] 나는 형식 변환을 해결하는 방법을 알고있다. 내가 필요한 것은 그 변환을 적용하기 위해 필요한 필드를 확인하는 방법입니다.

+0

아마이이 종류 것 같아 th Go 관리자를 기꺼이 고칠 수 있습니다. 나는 방금 [Bug 8254] (https://code.google.com/p/go/issues/detail?id=8254)를 인코딩/json 패키지에 대해 제출했습니다. –

+0

앞으로는 [golang-nuts Google Group] (https://groups.google.com/forum/#!forum/golang-nuts)에 대한 기능 요청/버그 보고서에 대한 질문을하고 싶을 수도 있습니다.), Go 개발 팀 중 한 사람이 그것을 볼 확률이 높습니다. –

+0

@KenBloom : 고마워요.하지만 제게는 언어 패키지를 편집하는 것보다 다른 방법으로이를 달성 할 수 없었습니다. 최근에 파이썬을 너무 많이 먹었습니다. – RickyA

답변

3

짧은 대답은 당신이 할 수 없다는 것입니다. json.Unmarshal 소스 코드에

  • 다이브의 작업을 변경하고 필요한 정보를 추가 할 : 로컬 패키지에 기능을 복사, 편집을 할 수 그러나

    , 당신의 문제를 해결하기 위해, 여러 솔루션이 및 JSON Schema로, 예를 들어, 당신을 도울 호환되는 JSON 유효성 검사기를이 기능
  • 사용하십시오 thrid 파티 도구를 사용하여 : 여기가 online example입니다, 더 좋은 적합한 도구
+0

json.Unmarshal에 들어가서 편집하면, 아마 모든 사람들에게 도움이되도록 Google에 패치를 제출하는 것이 가장 좋습니다. 아마도 [bug 8254] (https://code.google.com/p/go/issues/detail?id=8254)에 바로 첨부 할 수 있습니다. –