14,927,528 members
5.00/5 (1 vote)
See more:
I have JSON data coming from an application in the below format:
```[{ "name":"First",
"Custnumber":"123SC"
},
{"name":"Second",
"Custnumber":"67BC"
},
{"name":"Third",
"Custnumber":"99ABC"
},
{"name":"Fourth",
"Custnumber":"123SC"
}]```

Now, I have to split this based on Custnumber with which should be like this:
```[{ "name":"First",
"Custnumber":"123SC"
},
{"name":"Fourth",
"Custnumber":"123SC"
}]```

```[{"name":"Second",
"Custnumber":"67BC"
}]
```

```[{"name":"Third",
"Custnumber":"99ABC"
}]
```

What I have tried:

Please help me solving this. I am stuck here from 2 days.

Thanks in advance.
Posted
Updated 19-Jan-20 8:37am
v2
Comments
Christian Amado 19-Oct-17 19:10pm

What did you tried?

## Solution 1

Assuming the grouping will happen on the client side? Here is an example : Group json - JSFiddle[^]

The JSON will look like below after the grouping
HTML
```{
"123SC":[
{
"name":"First",
"Custnumber":"123SC"
},
{
"name":"Fourth",
"Custnumber":"123SC"
}
],
"67BC":[
{
"name":"Second",
"Custnumber":"67BC"
}
],
"99ABC":[
{
"name":"Third",
"Custnumber":"99ABC"
}
]
}```

Here the output by looping the object

```Custnumber 123SC has 2 customers :
---->1. First.
---->2. Fourth.
Custnumber 67BC has 1 customers :
---->1. Second.
Custnumber 99ABC has 1 customers :
---->1. Third. ```

Reference:
javascript - Grouping JSON by values - Stack Overflow[^]

## Solution 2

Just deserialise the json to objects, select the data from want from those objects then re-serialise.

```[DataContract]
public class Data
{
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember]
public string Custnumber { get; set; }
}```

```string json = "[{\"name\":\"First\", \"Custnumber\":\"123SC\" }, { \"name\":\"Second\", \"Custnumber\":\"67BC\" }, { \"name\":\"Third\", \"Custnumber\":\"99ABC\" }, { \"name\":\"Fourth\", \"Custnumber\":\"123SC\" }]";

List<Data> data = null;

// System.Runtime.Serialization.Json.DataContractJsonSerializer is just one way to
// serialise JSON, use whatever way you want to do this bit
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Data>));
data = ser.ReadObject(ms) as List<Data>;
ms.Close();

// get just the person you're interested in

data = data.Where(d => d.Custnumber == "123SC").ToList();

// serialize back to JSON

ms = new MemoryStream();

ser.WriteObject(ms, data);
ms.Position = 0;
json = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();```

you'll need these usings for that JSON serialiser, but as I said use whatever you normally use.

```using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;```

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Top Experts
Last 24hrsThis month
 Richard MacCutchan 250 OriginalGriff 215 Patrice T 115 Tony Hill 65 Daniel Pfeffer 50
 OriginalGriff 3,672 Richard MacCutchan 1,695 Richard Deeming 1,430 Patrice T 1,005 CPallini 865

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900