Here's a gist: 
https://gist.github.com/lukeic/7350d07cac28b2809e9930802251844f
This is the JSON I see output from (errors removed for brevity):

body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))



On Tuesday, 15 May 2018 07:24:31 UTC+10, alex....@gmail.com wrote:
>
> I do not see escaped quotes on your stackoverflow post, can you post the 
> raw json exactly as received?
>
> On Tuesday, 15 May 2018 05:16:59 UTC+8, Luke IC wrote:
>>
>> Thanks again for the help. Unfortunately it's a third-party API, so I 
>> won't be able to fix it myself. The full error message is as follows: 
>>
>> bad value in StructValue for key "image": unrecognized type for Value 
>> "\"https:\\/\\/ei.isnooth.com
>> \\/multimedia\\/0\\/2\\/8\\/image_787698_square.jpeg\""
>>
>> I assume the cause for this error is the escaped quotes?
>>
>> On Tuesday, 15 May 2018 07:08:05 UTC+10, alex....@gmail.com wrote:
>>>
>>> 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, alex....@gmail.com 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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to