Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 95085
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T23:36:11+00:00 2026-05-10T23:36:11+00:00

I’m trying to parse an array of JSON objects into an array of strings

  • 0

I’m trying to parse an array of JSON objects into an array of strings in C#. I can extract the array from the JSON object, but I can’t split the array string into an array of individual objects.

What I have is this test string:

string json = '{items:[{id:0,name:\'Lorem Ipsum\'},{id:1,name'              + ':\'Lorem Ipsum\'},{id:2,name:\'Lorem Ipsum\'}]}'; 

Right now I’m using the following regular expressions right now to split the items into individual objects. For now they’re 2 separate regular expressions until I fix the problem with the second one:

Regex arrayFinder = new Regex(@'\{items:\[(?<items>[^\]]*)\]\}'                                  , RegexOptions.ExplicitCapture); Regex arrayParser = new Regex(@'((?<items>\{[^\}]\}),?)+'                                  , RegexOptions.ExplicitCapture); 

The arrayFinder regex works the way I’d expect it but, for reasons I don’t understand, the arrayParser regex doesn’t work at all. All I want it to do is split the individual items into their own strings so I get a list like this:

{id:0,name:'Lorem Ipsum'}
{id:1,name:'Lorem Ipsum'}
{id:2,name:'Lorem Ipsum'}

Whether this list is a string[] array or a Group or Match collection doesn’t matter, but I’m stumped as to how to get the objects split. Using the arrayParser and the json string declared above, I’ve tried this code which I assumed would work with no luck:

string json = '{items:[{id:0,name:\'Lorem Ipsum\'},{id:1,name'              + ':\'Lorem Ipsum\'},{id:2,name:\'Lorem Ipsum\'}]}';  Regex arrayFinder = new Regex(@'\{items:\[(?<items>[^\]]*)\]\}'                                  , RegexOptions.ExplicitCapture); Regex arrayParser = new Regex(@'((?<items>\{[^\}]\}),?)+'                                  , RegexOptions.ExplicitCapture);  string array = arrayFinder.Match(json).Groups['items'].Value; // At this point the 'array' variable contains:  // {id:0,name:'Lorem Ipsum'},{id:1,name:'Lorem Ipsum'},{id:2,name:'Lorem Ipsum'}  // I would have expected one of these 2 lines to return  // the array of matches I'm looking for CaptureCollection c = arrayParser.Match(array).Captures; GroupCollection g = arrayParser.Match(array).Groups; 

Can anybody see what it is I’m doing wrong? I’m totally stuck on this.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T23:36:11+00:00Added an answer on May 10, 2026 at 11:36 pm

    Balanced parentheses are literally a textbook example of a language that cannot be processed with regular expressions. JSON is essentially balanced parentheses plus a bunch of other stuff, with the braces replaced by parens. In the hierarchy of formal languages, JSON is a context-free language. Regular expressions can’t parse context-free languages.

    Some systems offer extensions to regular expressions that kinda-sorta handle balanced expressions. However they’re all ugly hacks, they’re all unportable, and they’re all ultimately the wrong tool for the job.

    In professional work, you would almost always use an existing JSON parser. If you want to roll your own for educational purposes then I’d suggest starting with a simple arithmetic grammar that supports + – * / ( ). (JSON has some escaping rules which, while not complex, will make your first attempt harder than it needs to be.) Basically, you’ll need to:

    1. Decompose the language into an alphabet of symbols
    2. Write a context-free grammar in terms of those symbols thatrecognizes the language
    3. Convert the grammar into Chomsky normal form, or near enough to make step 5 easy
    4. Write a lexer that converts raw text into your input alphabet
    5. Write a recursive descent parser that takes your lexer’s output, parses it, and produces some kind of output

    This is a typical third-year CS assignment at just about any university.

    The next step is to find out how complex a JSON string you need to trigger a stack overflow in your recursive parser. Then look at the other types of parsers that can be written, and you’ll understand why anyone who has to parse a context-free language in the real world uses a tool like yacc or antlr instead of writing a parser by hand.

    If that’s more learning than you were looking for then you should feel free to go use an off-the-shelf JSON parser, satisified that you learned something important and useful: the limits of regular expressions.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 117k
  • Answers 118k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer class Program { static void Main(string[] args) { Timer timer… May 11, 2026 at 10:50 pm
  • Editorial Team
    Editorial Team added an answer Use GROUP_CONCAT SELECT GROUP_CONCAT(bar) FROM TABLE GROUP BY foo; May 11, 2026 at 10:50 pm
  • Editorial Team
    Editorial Team added an answer Your code doesn't work because the function is not returning… May 11, 2026 at 10:50 pm

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.