Sample code for 30+ languages & platforms
Lua

Find and Delete Object from JSON Array

See more JSON Examples

Demonstrates how to find an delete an object from a JSON array of objects.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example will delete the "Pasta" category object from Menu B.

-- {
--   "menus": [
--     {
--       "name": "Menu A",
--       "categories": [
--             {
--             "name": "Kebabs",
--             "description": "blah blah blah"
--             },
--             {
--             "name": "Burgers",
--             "description": "blah blah blah"
--             },
--             {
--             "name": "Pasta",
--             "description": "blah blah blah"
--             },
--             {
--             "name": "Appetizers",
--             "description": "blah blah blah"
--             }
--         ]
--     },
--     {
--       "name": "Menu B",
--       "categories": [
--             {
--             "name": "Kebabs",
--             "description": "blah blah blah"
--             },
--             {
--             "name": "Burgers",
--             "description": "blah blah blah"
--             },
--             {
--             "name": "Pasta",
--             "description": "blah blah blah"
--             },
--             {
--             "name": "Appetizers",
--             "description": "blah blah blah"
--             }
--         ]
--       }
--     ]
-- }

local json = chilkat.JsonObject.new()
local success = json:load_file("qa_data/json/menus.json")
if not success then
    print(json.last_error_text)
    return
end

-- Find Menu B.
local menu = json:find_record("menus", "name", "Menu B", true)
-- assume menu is found..

-- Get the categories array, and then find the index of the "Pasta" menu category.
local catArr = menu:array_of("categories")
-- Assume it is found..

-- Find the object where the name of the JSON member is "name", and the value is "Pasta"
local index = catArr:find_object("name", "Pasta", true)
if index < 0 then
    print("Pasta not found.")
else

    -- Delete the "Pasta" category record from Menu B
    success = catArr:delete_at(index)
    -- Assume OK..
end

-- Examine the JSON to see if it worked as expected..
json.emit_compact = false
print(json:emit())