Skip to content

Missing json:Array attribute when using JsonConvert.DeserializeXNode() on properties with special characters #3055

@drpdrp

Description

@drpdrp

Newtonsoft.Json version 13.0.3 (current)
.NET 9 (current)

BUG:
When using DeserializeXNode with arguments writeArrayAttribute and encodeSpecialCharacters set to true, the array attribute is not set for properties with special characters.

SAMPLE:
DotNetFiddleSample

CODE:

var json = """
{
	"test": ["CORRECT - contains jsonArray attribute"],
	"test#specialchar": ["BUG - missing jsonArray attribute"],
	"test$specialchar": ["BUG - missing jsonArray attribute"],
	"test%specialchar": ["BUG - missing jsonArray attribute"],
	"test:specialchar": ["BUG - missing jsonArray attribute"]
}
""";

var xDocument = JsonConvert.DeserializeXNode(json, "root", writeArrayAttribute: true, encodeSpecialCharacters: true);
Console.WriteLine(xDocument.ToString());

RESULT:

<root>
  <test json:Array="true" xmlns:json="http://james.newtonking.com/projects/json">CORRECT - contains jsonArray attribute</test>
  <test_x0023_specialchar>BUG - missing jsonArray attribute</test_x0023_specialchar>
  <test_x0024_specialchar>BUG - missing jsonArray attribute</test_x0024_specialchar>
  <test_x0025_specialchar>BUG - missing jsonArray attribute</test_x0025_specialchar>
  <test_x003A_specialchar>BUG - missing jsonArray attribute</test_x003A_specialchar>
</root>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions