余瑜的博客 余瑜的博客
首页
  • 并发
  • 线程池
  • spring
  • maven
  • 其他
  • redis
  • mysql
  • linux
  • zookeeper
  • docker
  • terminal
  • kong插件开发
  • 资料
  • leetCode-简单
  • blog
  • 其他
关于
GitHub (opens new window)
首页
  • 并发
  • 线程池
  • spring
  • maven
  • 其他
  • redis
  • mysql
  • linux
  • zookeeper
  • docker
  • terminal
  • kong插件开发
  • 资料
  • leetCode-简单
  • blog
  • 其他
关于
GitHub (opens new window)
  • linux

  • zookeeper

  • docker

  • terminal

  • kong插件开发

    • 开发环境搭建
    • go注册consul
    • konga配置
    • 插件开发
    • 调用c文件
    • 踩坑
      • lua5.1 number 转 string 问题
      • cjson转换如果key为字符串则不保证顺序性
        • encode
        • decode
      • konga不支持插件配置文件使用复杂类型
  • 运维
  • kong插件开发
余瑜
2021-05-13
目录

踩坑

# lua5.1 number 转 string 问题

部分number类型转为string类型会造成后几位错误, 如下

local num = 1234209856723049856
local numStr = string.format("%.0f", num)
print(type(num), tostring(num), numStr)

-- 运行
lua5.1 test.lua
number  1.234209856723e+18      1234209856723049984
1
2
3
4
5
6
7

该问题在lua5.3得到了解决, 但是由于kong不支持lua5.3, 所以在kong中暂时不能做这种转换

# cjson转换如果key为字符串则不保证顺序性

# encode

local cjson = require("cjson")
local function printTable(tab)
  local str = cjson.encode(tab)
  print(str)
end

local tab = {
  aa = "11",
  a = "1",
  b = "2",
  c = "3",
  d = "4",
}
local tabKeyNum = { "22", "1", "2", "3", "4", }
printTable(tab)
printTable(tabKeyNum)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# decode

local cjson = require("cjson")
local function printTableStr(tabStr)
  for i, v in pairs(cjson.decode(tabStr)) do
    print(i, v)
  end
end
local tabStr = "{\"a\":\"1\",\"b\":2,\"c\":3,\"d\":\"4\"}"
local tabNum = "[\"22\",\"1\",\"2\",\"3\",\"4\"]"
printTableStr(tabStr)
printTableStr(tabNum)

1
2
3
4
5
6
7
8
9
10
11

# konga不支持插件配置文件使用复杂类型

比如List<Object>,map 等, kong本身是支持的, 但是konga中不能正常显示和修改

在一些kong的自带插件中有使用到类似的类型, konga中也能正常显示与修改, 但是这实际上是konga采用硬编码的方式对指定的插件做了兼容, 如果将插件复制一份修改下名字就会发现不支持了-_-||

上次更新: 2021/06/03, 15:36:46

← 调用c文件

Theme by Vdoing | Copyright © 2018-2022 逆光世间 | 备案号: 京ICP备19016086号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式