Since you already have a string you don't need to return a JsonResult. The JsonResult basically converts an object into JSON.
You can just return it in a ContentResult and specify the correct content type:
string result = @"[{ ""TagGroupName"": ""group1"", ""Tags"": [{""TagName"":""G1tag1""},{""TagName"":""G1tag2""},{""TagName"":""G1tag3""}]}, { ""TagGroupName"": ""group2"", ""Tags"": [{""TagName"":""G2tag1""},{""TagName"":""G2tag2""}]}]";
return new ContentResult { Content = result, ContentType = "application/json" };
Just give your Action method ActionResult as a return type and that should work