Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 有没有办法将RedisValue[]转换为字符串[]?_Json_Stackexchange.redis - Fatal编程技术网

Json 有没有办法将RedisValue[]转换为字符串[]?

Json 有没有办法将RedisValue[]转换为字符串[]?,json,stackexchange.redis,Json,Stackexchange.redis,我有一个从StackExchange.Redis客户端返回的数组RedisValue[]。我想获取数组中的每个值(实际上是JSON字符串),并将它们连接在一起,得到一个有效的JSON字符串,然后返回给客户端 这是我想做的 var results = redis.HashGet("srch", ArrayOfRedisKeys[]); string returnString = "[" + string.Join(results, ",") + "]"; 但是,这不起作用,因为results是

我有一个从
StackExchange.Redis
客户端返回的数组
RedisValue[]
。我想获取数组中的每个值(实际上是
JSON
字符串),并将它们连接在一起,得到一个有效的
JSON
字符串,然后返回给客户端

这是我想做的

var results = redis.HashGet("srch", ArrayOfRedisKeys[]);

string returnString = "[" + string.Join(results, ",") + "]";
但是,这不起作用,因为
results
RedisValue
的数组,而不是
string
的数组。除了迭代
RedisValue
数组之外,还有没有一种直接有效的方法来实现这一点?

目前还没有,但我有以下扩展方法进入
ExtensionMethods.cs

    static readonly string[] nix = new string[0];
    /// <summary>
    /// Create an array of strings from an array of values
    /// </summary>
    public static string[] ToStringArray(this RedisValue[] values)
    {
        if (values == null) return null;
        if (values.Length == 0) return nix;
        return Array.ConvertAll(values, x => (string)x);
    }
静态只读字符串[]nix=新字符串[0];
/// 
///从值数组创建字符串数组
/// 
公共静态字符串[]到字符串数组(此值为[]个值)
{
if(value==null)返回null;
如果(values.Length==0)返回nix;
返回Array.ConvertAll(值,x=>(字符串)x);
}

因此:在下一个构建中,您只需使用
results.tostringaray()
。在此之前,您可以在本地复制上述内容。

ALERT。注意:如果值为null,则使用
values.tostringaray()
永远不会成功,因此最好像使用
tostringaray(values)
那样使用它,而不使用扩展方法
this
@Jaider您可以对
null
值调用扩展方法。以下操作可以正常工作:
RedisValue[]vals=null;字符串[]foo=vals.tostringaray()
-
foo
将为
null
,因为第一个
返回
。这正是因为编译器只是将其重写为
string[]foo=ExtensionMethods.tostringaray(vals)