Сравнение объекта суперсета в Голанге - PullRequest
0 голосов
/ 18 мая 2018

Я хочу сравнить два объекта

expected:= `"{\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"` 

result := `"{\"name\":\"xyz\",\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"`

Теперь, как мы видим, результат - это супер-набор ожидаемых, но когда я использую отражать.deepequal, он говорит ложь, потому что он точно сравнивает два объекта.Я хочу сравнить, является ли результат надмножеством ожидаемого или нет.

 func main(){

    result := "{\"name\":\"xyz\",\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

    expected := "{\"method\":\"GET\",\"body\":{},\"uploadCount\":0}" 

    var _result interface{}
    var _expected interface{}
    json.Unmarshal([]byte(result),&_result)
    json.Unmarshal([]byte(expected),&_expected)

    reflect.deepequal(_result,_expected)

}

1 Ответ

0 голосов
/ 18 мая 2018

Без каких-либо уточнений вы могли бы сделать что-то вроде

func main() {

    result := "{\"name\":\"xyz\",\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

    expected := "{\"method\":\"GET\",\"body\":{},\"uploadCount\":0}"

    var _result map[string]interface{}
    var _expected map[string]interface{}

    json.Unmarshal([]byte(result), &_result)
    json.Unmarshal([]byte(expected), &_expected)

    isSuperset := true

    for k, v := range _expected {
        if !reflect.DeepEqual(v, _result[k]) {
            isSuperset = false
            break
        } 
    }

    fmt.Println(isSuperset)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...