Json Erlang-**异常错误:右侧值不匹配
我对json格式字符串的模式匹配有问题。 在这里,我添加了一个简短的版本(刚刚将长json字符串更改为“{\”jsondata\”}” 我有一个成功的模式匹配:Json Erlang-**异常错误:右侧值不匹配,json,erlang,pattern-matching,Json,Erlang,Pattern Matching,我对json格式字符串的模式匹配有问题。 在这里,我添加了一个简短的版本(刚刚将长json字符串更改为“{\”jsondata\”}” 我有一个成功的模式匹配: > MyData2={ok,{{"HTTP/1.1",200,"OK"}, [{"connection","Keep-Alive"}, {"date","Thu, 10 Sep 2015 12:03:49 GMT"}, {"server","Apache/2.4.7 (U
> MyData2={ok,{{"HTTP/1.1",200,"OK"},
[{"connection","Keep-Alive"},
{"date","Thu, 10 Sep 2015 12:03:49 GMT"},
{"server","Apache/2.4.7 (Ubuntu)"},
{"vary","X-Auth-Token"},
{"content-length","1171"},
{"content-type","application/json"},
{"x-openstack-request-id",
"req-31b4efc1-2af4-4130-b7a8-01d94b456096"},
{"keep-alive","timeout=5, max=100"}],
"{\"jsondata\"}"}}.
之后,我运行以下程序:
> {ok,{{"HTTP/1.1",ReturnCode, State},B,J}}=MyData2.
不幸的是我得到了
如果我将“{\'jsondata\'}”
更改为“jsondata”
最后的模式匹配工作正常
我不知道如何提取json并在J中获取“{\”jsondata\“}”
我会通知你任何想法
**异常错误:右侧值不匹配您的模式匹配操作工作正常。我认为问题是,
ReturnCode
、State
、B
或J
中的一个变量已绑定
假设变量J
已绑定到某个值,而其他变量未绑定到该值。根据该值,模式匹配操作
{ok,{{"HTTP/1.1",ReturnCode, State},B,J}} = MyData2.
要么成功,要么失败
案例1:J
已绑定到“{\”jsondata\“}”
模式匹配将成功,未绑定变量(ReturnCode
、State
和B
)的值将根据MyData2
的模式进行设置
案例2:J
已绑定到“{jsondata}”
右侧的J
-变量与左侧的MyData2
模式不匹配。因此执行失败,出现异常
如果您忘记使用
f(变量)清除变量,则在shell上也会发生这种情况
您似乎收到了此错误,因为MyData2
已绑定在shell中。有关该问题的详细信息,请参阅。@Legocia-不,这是一个新问题,不绑定。是否可能,变量ReturnCode
、State
、B
或J
已绑定?这将导致错误这是一个类似的问题,因为它们将被左侧的绑定值替换。如果我复制粘贴所有内容并在新的shell中执行,则匹配效果会非常好。这必须是一个变量绑定问题,就像我刚刚发布的…与@maze le相同的结果:复制并粘贴所有内容到新的shell中,效果很好。另外,请仔细想想关于它:获取错误消息“右侧值不匹配”的唯一方法是,左侧的某个对象已经具有与右侧不匹配的值。。。