diff --git a/framework/helpers/mimeTypes.php b/framework/helpers/mimeTypes.php
index 7f95e0b..718cc05 100644
--- a/framework/helpers/mimeTypes.php
+++ b/framework/helpers/mimeTypes.php
@@ -71,6 +71,8 @@ return [
     'jpeg' => 'image/jpeg',
     'jpg' => 'image/jpeg',
     'js' => 'application/x-javascript',
+    'json' => 'application/json',
+    'jsonp' => 'text/javascript',
     'kar' => 'audio/midi',
     'latex' => 'application/x-latex',
     'lha' => 'application/octet-stream',
diff --git a/tests/unit/framework/helpers/FileHelperTest.php b/tests/unit/framework/helpers/FileHelperTest.php
index 0c1a9bc..3b09dec 100644
--- a/tests/unit/framework/helpers/FileHelperTest.php
+++ b/tests/unit/framework/helpers/FileHelperTest.php
@@ -348,10 +348,14 @@ class FileHelperTest extends TestCase
         $file = $this->testFilePath . DIRECTORY_SEPARATOR . 'mime_type_test.txt';
         file_put_contents($file, 'some text');
         $this->assertEquals('text/plain', FileHelper::getMimeType($file));
-
+		
+        // see http://stackoverflow.com/questions/477816/what-is-the-correct-json-content-type
+        // JSON/JSONP should not use text/plain - see http://jibbering.com/blog/?p=514
+        // with "fileinfo" extension enabled, returned MIME is not quite correctly "text/plain"
+        // without "fileinfo" it falls back to getMimeTypeByExtension() and returns application/json
         $file = $this->testFilePath . DIRECTORY_SEPARATOR . 'mime_type_test.json';
         file_put_contents($file, '{"a": "b"}');
-        $this->assertEquals('text/plain', FileHelper::getMimeType($file));
+        $this->assertTrue(in_array(FileHelper::getMimeType($file), array('application/json', 'text/plain')));
     }
 
     public function testNormalizePath()