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.