为什么我的 json 数据没有使用 JsonView 显示?

Why isn't my json data displaying with JsonView?

我正在尝试使用 JSONView 显示此代码,但在从 api 回调函数内部调用数据时不会显示,但在回调函数外部会显示非 api 数据.

// Call FreeGeoIP API to get browser IP address
$.getJSON('https://freegeoip.net/json/', function(data) {
  var ipaddress = data.ip;

  // Get browser language
  var language = window.navigator.language;

  // Get software
  var software = window.navigator.appVersion;
  var regExp = /\(([^)]+)\)/;
  software = regExp.exec(software)[1];

  // Add data to obj
  var obj = {
    'ipaddress': ipaddress,
    'language': language,
    'software': software
  };

  // Write obj to document
  $('body').html(JSON.stringify(obj));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

JSONView 或任何其他 json 格式化程序会根据加载的 documentcontentType(在 http [=23= 上设置)检测您是否正在查看 json ]).

由于您必须 运行 此代码在 client side (浏览器)上 contentType 设置为 text/html

为了使插件正确格式化 json,它必须知道您正在查看的确实是 json,并且它通过读取 contentType header. 这就是为什么通过此脚本获取 json 将 json 显示为 body 属性中的文本但未被插件拾取的原因。

JSONView 扩展程序或 Chrome 浏览器中的任何其他扩展程序如果从您的本地系统访问文件,则需要访问文件 URL 的权限。 允许:-

  1. 访问chrome://extensions/
  2. 单击扩展卡的 Details 按钮
  3. Switch ON Allow access to file URLs