Json Erlang-**异常错误:右侧值不匹配

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

我对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 (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中,效果很好。另外,请仔细想想关于它:获取错误消息“右侧值不匹配”的唯一方法是,左侧的某个对象已经具有与右侧不匹配的值。。。