Lua
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
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())