在C#中将Ruby哈希转换为Json

时间:2018-01-10 15:34:26

标签: c# json ruby

我正在寻找帮助来编写一个方法,用于在C#中将Ruby哈希转换为Json。

FYI Ruby哈希是这样的:

{"tiger"=>3, "lion"=>2, "dog"=>2, "cat"=>3}

但也可以包含这样的数组

{"section"=>"Gar", "code"=>2, "collections"=>"[{:key=>\"emotion\", :value=>\"Emotion\"}]", "batch"=>"M"}

我知道使用Ruby中的to_json指令将Ruby哈希转换为Json非常容易,但我正在寻找C#中的类似指令(如果存在)。

换句话说,我收到这种格式的字符串:

{"section"=>"Gar", "code"=>2, "collections"=>"[{:key=>\"emotion\", :value=>\"Emotion\"}]", "batch"=>"M"}

我想要这个

{"section": "Gar", "code": 2, "batch": "M", "collections": [{"key": "emotion", "value": "Emotion"}]}

1 个答案:

答案 0 :(得分:0)

我通过逐步替换其他人的字符串元素找到了一个肮脏但有效的替代品。它运作得很好。

// Define other methods and classes here
public string ToJson(string hash)
{
    hash = Regex.Replace(hash, @":(\w+)=>", @"""$1"": ");
    hash = Regex.Replace(hash, @"\\""", @"""");
    hash = Regex.Replace(hash, @"\\\\", @"");
    hash = Regex.Replace(hash, @"=>", @": ");
    hash = Regex.Replace(hash, @"""\[", @"[");
    hash = Regex.Replace(hash, @"\]""", @"]");
    hash = Regex.Replace(hash, @"""\{", @"{");
    hash = Regex.Replace(hash, @"\}""", @"}");
    hash = Regex.Replace(hash, @"NULL", @"null");
    hash = $"{{{hash}}}";
    //JObject jObject = (JObject)JsonConvert.DeserializeObject(hash);
    return hash;
}