Because you wanted speed, this may or may not interest you
unsafe public static string Convert(string input)
{
   fixed (char* pInput = input)
   {
      char* p1, p2, len = pInput + input.Length;
      for (p1 = p2 = pInput + 1; p2 < len; p1++, p2++)
         *p1 = *(p2 - 1) == '"' && *p2 == '_' ? char.ToUpper(*++p2) : *p2;
      return input.Substring(0, (int)(p1 - pInput));
   }
}
It simply replaces, "_<char> to "<Upper case char>
On my pc it can do 445 Mb 1.8 seconds
Sample Input
{
   "menu":{
      "id":"_file",
      "value":"_file",
      "popup":{
         "menuitem":[
            {
               "value":"_new",
               "onclick":"_createNewDoc()"
            },
            {
               "value":"_open",
               "onclick":"_openDoc()"
            },
            {
               "value":"_close",
               "onclick":"_closeDoc()"
            }
         ]
      }
   }
}
Output
{
   "menu":{
      "id":"File",
      "value":"File",
      "popup":{
         "menuitem":[
            {
               "value":"New",
               "onclick":"CreateNewDoc()"
            },
            {
               "value":"Open",
               "onclick":"OpenDoc()"
            },
            {
               "value":"Close",
               "onclick":"CloseDoc()"
            }
         ]
      }
   }
}
Additional resources