暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

右键菜单增加JSON解析功能

上下博客 2021-09-09
482

由于某些文档需要使用JSON,并且还挺频繁。也没有找到什么小工具能够很好的编辑,所以写了一个小工具添加到右键菜单里。其中使用到了JsonCpp库。
安装步骤
    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
    ./bootstrap-vcpkg.sh
    ./vcpkg integrate install
    ./vcpkg install jsoncpp
    复制

    最后一步需要语言包

    JsonCpp安装好以后就可以进行代码编写了

      #include <iostream>
      #include "json/json.h"
      #include <string>
      #include <windows.h>


      using namespace std;


      #if defined(GNUC)
      #pragma GCC diagnostic push
      #pragma GCC diagnostic ignored “-Wdeprecated-declarations”
      #elif defined(_MSC_VER)
      #pragma warning(disable : 4996)
      #endif


      #pragma comment(linker,"/subsystem:\"windows\" entry:\"mainCRTStartup\"")


      int main()
      {
      HWND hWnd = NULL;
      OpenClipboard(hWnd);
      char* jsonString = nullptr;
      if (IsClipboardFormatAvailable(CF_TEXT))
      {
      HANDLE h = GetClipboardData(CF_TEXT);
      jsonString = (char*)GlobalLock(h);
      GlobalUnlock(h);
      }
      CloseClipboard();
      if (jsonString == nullptr || jsonString == NULL) {
      return 0;
      }
      Json::Reader reader;
      Json::Value rootObj ;
      reader.parse(jsonString, rootObj);
      if (rootObj.empty()) {
      return 0;
      }
      bool enter = false;
      int enter_num = 0;
      while (*jsonString)
      {
      if (*jsonString == '\n') {
      enter_num++;
      }
      if (enter_num > 2) {
      enter = true;
      }
      jsonString++;
      }
      string echoJson;
      if (enter) {
      Json::FastWriter fastWriter;
      echoJson = fastWriter.write(rootObj);
      }else{
      Json::StyledWriter styleWriter;
      echoJson = styleWriter.write(rootObj);
      }
      if (rootObj.empty() || echoJson.empty() || echoJson.size() == 0) {
      return 0;
      }
      hWnd = NULL;
      OpenClipboard(hWnd);//打开剪切板
      EmptyClipboard();//清空剪切板
      HANDLE hHandle = GlobalAlloc(GMEM_FIXED, echoJson.size()+1);
      char* pData = (char*)GlobalLock(hHandle);
      strcpy(pData, echoJson.c_str());
      SetClipboardData(CF_TEXT, hHandle);
      GlobalUnlock(hHandle);
      CloseClipboard();
      if (enter) {
      MessageBoxA(NULL, "剪贴板数据已转换为【单】行", "提示", 64);
      }
      else {
      MessageBoxA(NULL, "剪贴板数据已转换为【多】行", "提示", 64);
      }
      return 0;
      }
      复制

      打开注册表定位到如下位置

      计算机\HKEY_CLASSES_ROOT\Directory\Background\shell

      新增项

      名称:JsonCpp

      默认值:JSON 格式化

      JsonCpp新增项

      名字:command

      默认值:"C:\temp_code\jsoncpp.exe" "%V"



      文章转载自上下博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论