<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:37:22 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CSHARP-624] MongoDB.Bson.Serialization.Serializers.DictionarySerializer do not support empty string as key. </title>
                <link>https://jira.mongodb.org/browse/CSHARP-624</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;In C# it is ok create the following code:&lt;/p&gt;

&lt;p&gt;var dic = new Dictionary&amp;lt;string,int&amp;gt; { &lt;/p&gt;
{&quot;&quot;, 1}
&lt;p&gt;, {&quot;test&quot;, 2}};&lt;/p&gt;

&lt;p&gt;but this dictionary can&apos;t get serialized when it has an empty string as key.&lt;/p&gt;

&lt;p&gt;See: &lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/blob/master/Bson/Serialization/Serializers/DictionarySerializer.cs#L178&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/blob/master/Bson/Serialization/Serializers/DictionarySerializer.cs#L178&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="55211">CSHARP-624</key>
            <summary>MongoDB.Bson.Serialization.Serializers.DictionarySerializer do not support empty string as key. </summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="robert@mongodb.com">Robert Stam</assignee>
                                    <reporter username="mbertelsen">Michael Bertelsen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Nov 2012 14:53:15 +0000</created>
                <updated>Mon, 10 Dec 2012 20:53:41 +0000</updated>
                            <resolved>Mon, 10 Dec 2012 02:44:13 +0000</resolved>
                                    <version>1.6.1</version>
                    <version>1.7</version>
                                    <fixVersion>1.8</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="211443" author="auto" created="Mon, 10 Dec 2012 20:53:41 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-12-10T02:23:05Z&apos;, u&apos;email&apos;: u&apos;robert@10gen.com&apos;, u&apos;name&apos;: u&apos;rstam&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-624&quot; title=&quot;MongoDB.Bson.Serialization.Serializers.DictionarySerializer do not support empty string as key. &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-624&quot;&gt;&lt;del&gt;CSHARP-624&lt;/del&gt;&lt;/a&gt;: Handle empty string key value when serializing dictionaries.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/b5c0cd59589468ccd3170ffb2b2fcbd9429339bd&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/b5c0cd59589468ccd3170ffb2b2fcbd9429339bd&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="210676" author="auto" created="Mon, 10 Dec 2012 02:43:08 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-12-10T02:23:05Z&apos;, u&apos;email&apos;: u&apos;robert@10gen.com&apos;, u&apos;name&apos;: u&apos;rstam&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-624&quot; title=&quot;MongoDB.Bson.Serialization.Serializers.DictionarySerializer do not support empty string as key. &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-624&quot;&gt;&lt;del&gt;CSHARP-624&lt;/del&gt;&lt;/a&gt;: Handle empty string key value when serializing dictionaries.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/585abea544882cbd7e57156fd3b898f23fe9364a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/585abea544882cbd7e57156fd3b898f23fe9364a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="208969" author="rstam" created="Fri, 7 Dec 2012 15:16:35 +0000"  >&lt;p&gt;While empty field names may not be recommended, they are certainly legal, both in MongoDB and in Javascript.&lt;/p&gt;

&lt;p&gt;They are definitely legal as the key value in a C# dictionary, so we must support serializing them somehow. Currently the DictionarySerializer&amp;lt;TKey, TValue&amp;gt; is throwing an IndexOutOfRangeException because the code is assuming the key is non-empty. That&apos;s a bug.&lt;/p&gt;

&lt;p&gt;The DictionarySerializer already has a fallback representation for dictionaries that contain keys that aren&apos;t valid JSON field names, so the only question in my mind is whether an empty string key value should be represented using an empty field name or trigger the alternate representation for dictionaries.&lt;/p&gt;

&lt;p&gt;The two possible representations look like this (where the Values field is a serialized Dictionary&amp;lt;string, int&amp;gt;):&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{ &quot;_id&quot; : 1, &quot;Values&quot; : { &quot;&quot; : 1, &quot;test&quot; : 2 } }&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{ &quot;_id&quot; : 1, &quot;Values&quot; : [[&quot;&quot;, 1], [&quot;test&quot;, 2]] }&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;</comment>
                            <comment id="186629" author="craiggwilson" created="Mon, 12 Nov 2012 16:06:52 +0000"  >&lt;p&gt;So, while empty keys are technically supported by mongodb, it is highly advisable that they not be used.  Is there are compelling reason you need this feature?&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrkdbz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>32588</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>