In the long term I would investigate what's wrong with the json and if
possible fix it at the source.
Also use this as a reference on what gets mapped to what
https://developers.google.com/protocol-buffers/docs/proto3#json
On Tuesday, 15 May 2018 05:03:46 UTC+8, Luke IC wrote:
>
> Thanks a lot, I went back and gave jsonpb a go and finally got it
> unmarshalling as desired.
>
> To do so though I had to unmarshal and marshal the response with the
> regular json library first, in order to get around some escaped values in
> the response (I was receiving a 'bad value in Struct' error:
>
> resJson, err := ioutil.ReadAll(res.Body)
>
> j := make(map[string]interface{})
>
> jbytes, err := json.Marshal(j)
>
> result := &pb.Response{}
> r := strings.NewReader(string(jbytes))
> if err := jsonpb.Unmarshal(r, result); err != nil {
> panic(err)
> }
>
>
> Is this fine to do, or is it super inefficient and will cause problems?
>
>
> On Tuesday, 15 May 2018 05:09:04 UTC+10, [email protected] wrote:
>>
>> You need to use the go protobuf json decoder
>> https://github.com/golang/protobuf/tree/master/jsonpb
>>
>> On Monday, 14 May 2018 11:24:06 UTC+8, Luke IC wrote:
>>>
>>> Hi all,
>>>
>>> I'm creating a microservice in Go, using protocol buffers and gRPC. It
>>> interacts with a third-party API (Snooth) and I'm trying to unmarshal the
>>> JSON response into a protobuf struct I've created, using the proto
>>> package.
>>>
>>> Unmarshalling returns an unexpected EOF error.
>>>
>>>
>>> I've summed up the details in full on this question at Stack Overflow:
>>> https://stackoverflow.com/questions/50314476/why-does-unmarshalling-this-api-response-return-an-unexpected-eof
>>>
>>>
>>> In addition to the information posted there, I've also tried using
>>> strconv.Unquote before unmarshalling in line with the idea that the escaped
>>> characters in the API response are causing a double-encode. But this didn't
>>> work either.
>>>
>>> Any help would be greatly appreciated as I've been stuck on this for a
>>> while now and feel there's something simple I'm missing.
>>>
>>>
>>> Thanks.
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.