omnip620 / node-zookeeper-dubbo

A middleware helps node to communicate dubbo by using its default protocol, which is registered in zookeeper
300 stars 80 forks source link

请问String数组类型如何传参 #23

Closed shi2713 closed 7 years ago

shi2713 commented 7 years ago

var arg1={$class:'java.lang.StringArray',$:['a','b']}; var arg2={$class:'java.lang.String[]',$:['a','b']}; var arg3=java.String(['a']); var arg4=java,array('String', [1, 2, 3]);

以上方法都试了,均为dubbo接口返回错误,求教!

omnip620 commented 7 years ago

var arg={$class:'java.util.List',$:['a','b']}; 试试这个

shi2713 commented 7 years ago

还是不行,控制台如下: Yeah zookeeper connected! java.lang.ClassCastException

java里这么调用:Map<String, String> getSkuMultiProperties(String skuId,String[] properties);

第二个参数是String[],我试了各种方法都无法转换正确; PS:我调用的是1.7.29

omnip620 commented 7 years ago

你把声明的java方法和nodejs调用的方法发出来 我看下

shi2713 commented 7 years ago

NODE: `var method="getSkuMultiProperties"; var arg1=java.String('1000009776'); var arg2={$class:'java.util.List',$:['productIds']}; var args=[arg1,arg2]; var service = new Service(opt);

service.excute(method,args,function(err,data){
    if(err){
        console.log(err);
        return;
    }
       console.log(data)
});`

JAVA: Map<String, String> getSkuMultiProperties(String skuId,String[] properties);

omnip620 commented 7 years ago

var arg1={$class:'java.lang.String',$:'1000009776'}; 试试这样 再不行的话你先传一个参数

shi2713 commented 7 years ago

不行,只传一个参数的话接口报错;

panxia commented 7 years ago

大神,救救我们把,对象数组类型都不知道怎么传值

shi2713 commented 7 years ago

楼上的也碰到这个问题了吗? 现在解决了吗?

omnip620 commented 7 years ago

刚看了下,由于我们这边大多数情况都是用List作为数组类型的传输,目前暂时不支持类似 String[] 的写法,如果确实有这个需求的话,我们会在下个版本加上去。

shi2713 commented 7 years ago

好的,期待楼主尽快更新,这边的dubbo接口全是String[]类型,拉着后端调试了一整天也没通。

omnip620 commented 7 years ago

@shi2713 @panxia 数组类型的加上了

shi2713 commented 7 years ago

@p412726700 经测试1.7.30已经调通。

justinyueh commented 7 years ago

@p412726700 init[]是不是也不支持,我这报错Fail to decode request due to: RpcInvocation

justinyueh commented 7 years ago

@p412726700 我提了个pull request #34 ,请帮忙审核发一版 谢谢

harryhan1989 commented 5 years ago

项目需求nodejs连接dubbo接口,找到node-zookeeper-dubbo很不错,但是复杂java对象却很难开发。网上也没搜到这方面的工具,索性自己写了个,经过多次调试试错,实现了普通json自动转换为dubbo可识别的java序列化对象,可支持java实体类内嵌实体类及内嵌List这种转化,简单高效,现在实现的比较简单,就是个工具类,有兴趣的同学欢迎包装为nodejs通用插件或eggjs插件:https://github.com/harryhan1989/json-to-java