private void DeterminePropertyName() { if (PropertyInfo == null) { return; } JsonPropertyNameAttribute nameAttribute = GetAttribute <JsonPropertyNameAttribute>(PropertyInfo); if (nameAttribute != null) { string name = nameAttribute.Name; if (name == null) { ThrowHelper.ThrowInvalidOperationException_SerializerPropertyNameNull(ParentClassType, this); } NameAsString = name; } else if (Options.PropertyNamingPolicy != null) { string name = Options.PropertyNamingPolicy.ConvertName(PropertyInfo.Name); if (name == null) { ThrowHelper.ThrowInvalidOperationException_SerializerPropertyNameNull(ParentClassType, this); } NameAsString = name; } else { NameAsString = PropertyInfo.Name; } Debug.Assert(NameAsString != null); // At this point propertyName is valid UTF16, so just call the simple UTF16->UTF8 encoder. Name = Encoding.UTF8.GetBytes(NameAsString); // Set the compare name. if (Options.PropertyNameCaseInsensitive) { NameUsedToCompareAsString = NameAsString.ToUpperInvariant(); NameUsedToCompare = Encoding.UTF8.GetBytes(NameUsedToCompareAsString); } else { NameUsedToCompareAsString = NameAsString; NameUsedToCompare = Name; } // Cache the escaped name. EscapedName = JsonEncodedText.Encode(Name); }
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { if (gvAccount.SelectedRow != null) { var idStr = gvAccount.SelectedRow.Cells[1].Text; Guid id; if (Guid.TryParse(idStr, out id)) { var a = AccountManager.GetAccountById(id); var account = new NameAsString { ID = a.ID, Name = a.NAME }; ScriptManager.RegisterStartupScript(this, GetType(), "SELECTACCOUNT_" + ClientID, "var selectedAccount = '" + JsonConvert.SerializeObject(account) + "';", true); } } }
private void DeterminePropertyName(JsonSerializerOptions options) { if (PropertyInfo == null) { return; } JsonPropertyNameAttribute nameAttribute = GetAttribute <JsonPropertyNameAttribute>(PropertyInfo); if (nameAttribute != null) { string name = nameAttribute.Name; if (name == null) { ThrowHelper.ThrowInvalidOperationException_SerializerPropertyNameNull(ParentClassType, this); } NameAsString = name; } else if (options.PropertyNamingPolicy != null) { string name = options.PropertyNamingPolicy.ConvertName(PropertyInfo.Name); if (name == null) { ThrowHelper.ThrowInvalidOperationException_SerializerPropertyNameNull(ParentClassType, this); } NameAsString = name; } else { NameAsString = PropertyInfo.Name; } Debug.Assert(NameAsString != null); // At this point propertyName is valid UTF16, so just call the simple UTF16->UTF8 encoder. Name = Encoding.UTF8.GetBytes(NameAsString); // Set the compare name. if (options.PropertyNameCaseInsensitive) { NameUsedToCompareAsString = NameAsString.ToUpperInvariant(); NameUsedToCompare = Encoding.UTF8.GetBytes(NameUsedToCompareAsString); } else { NameUsedToCompareAsString = NameAsString; NameUsedToCompare = Name; } // Cache the escaped name. #if true // temporary behavior until the writer can accept escaped string. EscapedName = Name; #else int valueIdx = JsonWriterHelper.NeedsEscaping(_name); if (valueIdx == -1) { _escapedName = _name; } else { byte[] pooledName = null; int length = JsonWriterHelper.GetMaxEscapedLength(_name.Length, valueIdx); Span <byte> escapedName = length <= JsonConstants.StackallocThreshold ? stackalloc byte[length] : (pooledName = ArrayPool <byte> .Shared.Rent(length)); JsonWriterHelper.EscapeString(_name, escapedName, 0, out int written); _escapedName = escapedName.Slice(0, written).ToArray(); if (pooledName != null) { // We clear the array because it is "user data" (although a property name). new Span <byte>(pooledName, 0, written).Clear(); ArrayPool <byte> .Shared.Return(pooledName); } } #endif }
private void DeterminePropertyName(JsonSerializerOptions options) { if (PropertyInfo != null) { JsonPropertyNameAttribute nameAttribute = GetAttribute <JsonPropertyNameAttribute>(); if (nameAttribute != null) { NameAsString = nameAttribute.Name; // This is detected and thrown by caller. if (NameAsString == null) { return; } } else if (options.PropertyNamingPolicy != null) { NameAsString = options.PropertyNamingPolicy.ConvertName(PropertyInfo.Name); // This is detected and thrown by caller. if (NameAsString == null) { return; } } else { NameAsString = PropertyInfo.Name; } // At this point propertyName is valid UTF16, so just call the simple UTF16->UTF8 encoder. _name = Encoding.UTF8.GetBytes(NameAsString); // Set the compare name. if (options.PropertyNameCaseInsensitive) { CompareNameAsString = NameAsString.ToUpperInvariant(); _compareName = Encoding.UTF8.GetBytes(CompareNameAsString); } else { CompareNameAsString = NameAsString; _compareName = _name; } // Cache the escaped name. int valueIdx = JsonWriterHelper.NeedsEscaping(_name); if (valueIdx == -1) { _escapedName = _name; } else { int length = JsonWriterHelper.GetMaxEscapedLength(_name.Length, valueIdx); byte[] tempArray = ArrayPool <byte> .Shared.Rent(length); JsonWriterHelper.EscapeString(_name, tempArray, valueIdx, out int written); _escapedName = new byte[written]; tempArray.CopyTo(_escapedName, 0); // We clear the array because it is "user data" (although a property name). new Span <byte>(tempArray, 0, written).Clear(); ArrayPool <byte> .Shared.Return(tempArray); } } }